无符号整形

来源:百度知道 编辑:UC知道 时间:2024/07/07 02:51:43
已知unsingned intx=65535,则执行printf("%d\n",x),输出的值是什么
怎么算的?

输出-1
因为65535在内存中的存储形式为16个1;当以%d(有符号整形)输出时最高位1表示负号;而16个1是-1在内存中的存储形式(算法:|-1|=1,1在内存中形式为15个0和1个1,然后取反,得到15个1和1个0,然后再加1,得到16个1);所以输出-1

整形: 表示方法 [signed]int 范围 -32768~32767 长整形; 表示方法 long[int] 范围 -2147483648~2147483647 无符号整形: 表示 unsigned int 范围0~65535

会 输出 -1
%d 把输出 解释成一个有符号的10进制
整数
65535的2进制是16个1或32个1

输出的值还是
65535

有符号 int型取值范围是:-32768到32767
无符号 int型取值范围是:0到65535