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

是怎么算出来的?
2025-03-10 17:20:04
推荐回答(5个)
回答1:

这是因为int在计算机中是以补码形式存放的。
在16位的C编译器中,int占2个字节,-1的补码是1111111111111111(16个1)
所以,以十进制输出时为-1,以八进制输出时就是177777

回答2:

默认是以整型数据输出的,楼主的 int a=-1; printf("%d,%O",a,a);时输出为-1,177777是正确的结果,因为在整型中,“-1”的八进制数是177777,若果楼主把程序改为 int a=-1; printf("%d,%lO",a,a);时,那么相应的输出就会为-1,-1了,楼主可以试试

回答3:

你这个应该是16位机吧

-1的2进制码是 1111 1111 1111 1111,然后对应一下如图所示:

回答4:

估计你用的是tc,tc中int 是16位的
第一个就不解释了
int存放的时候都是16进制的
int -1的16进制是(16位的)FF FF 它3的八进制就是177777

回答5:

前面一个输出的是a=-1;后面一个格式不对,输出得是随机数