大虾们进来帮帮忙忙解决个问题呀
int a=-1printf("%d,%o",a,a);
输出的结果是:-1,177777
请问后面的177777是怎么得来的?说得越详细越好
我是新手,接触C没多久 麻烦站在我的角度回答问题
还有一个问题 我看过一本书上用八进制跟十六制表示-617的结果分别是(176627)8跟(fd97)16
我都不知道结果是怎么得来的 难道负整数跟正整数化成别的进制时是有区别的吗?
----------------解决方案--------------------------------------------------------
没有区别。区别就在于你这个printf函数。。因为%o是输出一个无符号八进制数。。就拿-1为例子 实际上他在内存里面是0xffff原因你自己领悟吧。。把它转成无符号八进制就当然变成177777了。。
----------------解决方案--------------------------------------------------------
如果你想要正确输出的话建议你定义一个宏来输出这个八进制数
#define _oct_f(oct) (oct==abs(oct))?printf("%o",oct):printf("-%o",abs(oct))
----------------解决方案--------------------------------------------------------