这个c语言编程结果

来源:百度知道 编辑:UC知道 时间:2024/06/17 18:30:52
请详细解释下这个编程的结果,谢谢!
#include <stdio.h>
main()
{
int a;
a=-1;
printf("%d\n,%o",a,a);
}

-1
177776
-1
在计算机是以二进制补码的形式出现的
15个1+一个0
转化为八进制,就是177776(用计算器)

我运行的结果是这样的:
-1
,37777777777

%o的意思是无符号以八进制表示的整数,-1的最高位是1,如果被看成无符号数的话就是个很大的数了,就是这样。

强制转换不会改变a的内容,记住这个那结果你自己去分析吧.

%d是来输出整数,自然没有问题。

%o是来以八进制输出整数。就是将-1在内存中的二进制形势3位3位的以8进制形势输出。-1的2进制是1111 1111 1111 1111,所以结果是177777

-1,37777777777