当前位置: 代码迷 >> C语言 >> 大虾们进来帮帮忙忙解决个问题呀
  详细解决方案

大虾们进来帮帮忙忙解决个问题呀

热度:312   发布时间:2008-06-12 01:10:56.0
大虾们进来帮帮忙忙解决个问题呀
int a=-1
printf("%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))
----------------解决方案--------------------------------------------------------
  相关解决方案