永发信息网

为什么执行 int a=-1; printf("%d,%O",a,a);时输出为-1,177777,谢谢

答案:5  悬赏:50  手机版
解决时间 2021-04-26 20:41
  • 提问者网友:
  • 2021-04-26 11:01
为什么执行 int a=-1; printf("%d,%O",a,a);时输出为-1,177777,谢谢
最佳答案
  • 五星知识达人网友:逃夭
  • 2021-04-26 11:30
这是因为int在计算机中是以补码形式存放的。
在16位的C编译器中,int占2个字节,-1的补码是1111111111111111(16个1)
所以,以十进制输出时为-1,以八进制输出时就是177777
全部回答
  • 1楼网友:由着我着迷
  • 2021-04-26 14:51

你这个应该是16位机吧

-1的2进制码是
  • 2楼网友:长青诗
  • 2021-04-26 14:41
前面一个输出的是a=-1;后面一个格式不对,输出得是随机数
  • 3楼网友:琴狂剑也妄
  • 2021-04-26 13:12
默认是以整型数据输出的,楼主的 int a=-1; printf("%d,%O",a,a);时输出为-1,177777是正确的结果,因为在整型中,“-1”的八进制数是177777,若果楼主把程序改为 int a=-1; printf("%d,%lO",a,a);时,那么相应的输出就会为-1,-1了,楼主可以试试
  • 4楼网友:鱼芗
  • 2021-04-26 12:07
估计你用的是tc,tc中int 是16位的
第一个就不解释了
int存放的时候都是16进制的
int -1的16进制是(16位的)FF FF 它3的八进制就是177777
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯