关于C语言的问题??

来源:百度知道 编辑:UC知道 时间:2024/05/25 14:06:00
int a=-1;
printf("%x,%O,%d",a,a,a);
为什么这个小程序的输出结果是
ffff,177777,-1
int a=-1
printf("%x",a);
为什么结果会是ffff
实在是看不明白啊

同意楼上的!
为了保证 A + (-A) = 0,负数使用了补码表示形式,
-A = |A|反码 + 1
1在16位中为 0 0000000 00000001
正|负 高位 底位
-1 = 1的反码 加上 1
0 0000000 00000001---------------1
1 1111111 11111110---------------1的反码
1 1111111 11111111--------------- -1
0 0000000 00000001--------------- 1+ -1=0

给你个系统的例子,当然你要的也在里面,看了之后你对pringf语句会有更深的理解
int a=123,b=12345,c=-1; 变量定义,整型,赋初值
float f=123; 变量定义,浮点实数,赋初值
printf("%4d,%4d,%d,%o,%x,%X\n",a,b,c,c,c,c);
printf("%f,%10f,%10.2f,%-10.2f,%e\n",f,f,f,f,f);
printf("%3s,%7.2s\n","hello","HELLO");
printf("%.4s,%-5.3s\n","HELLO","hello");
printf("\"\x48\x65\x6c\x6c\x6f\x2c\x57\x6f\x72\x6c\x64\x21\"\n");

后面五行都是输出,不过格式不同,其具体含义如下(注意:C语言的输出格式非常复杂):

d格式符,用来输出十进制整数.

⑴%d,按整型数据