圆是不是全对称图形:问道简单的c语言题目

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/26 06:49:41
int类型变量占两个字节,以下语句的输出结果是什么?
int a=-1; printf("%d,%o,%x,%u\n",a,a,a,a);
答案其实我知道 但是不明白为什么为什么???
- -!哥们这道题的答案不是你说得这样啊。。。。是-1,177777,ffff,65535

-1,37777777777,ffffffff,4294967295

-1我就不说了,FFFFFFFF是十六进制的-1,补码表示的。

37777777777和4294967295分别是八进制与十进制无符号表示,值与ffffffff相同。

//========================================

补充:
喂,你稍微动动脑子行不啊?你没发现规律吗?其实结果都是一样的,只不过不同的编译器对字节有的时候定义不同而已,177777和65535不就是八进制和十进制的FFFF嘛!
只不过我用了一个定义int为4字节的编译器罢了!

因为,%o,%u,%x,他们都是以无符号形势输出数字。
而-1在内存中是以补码形式存放的,所以当输出时,符号位也会被当作八进制的一部分来输出。自然就会出现这样的结果。
存储形式:1|1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
(第一位,是符号位)

65535
当要输出的数值超出了你定义的范围就输出65535
要不你在定义下试试