#include<stdio.h>void main(){ unsigned int x=0xFFFF; printf("%u\n",x);}输出结果是65535 为什么啊??这是怎么算的???请解答详细一些我已经查过这个问题了 但是我都看不懂 所以请解答人再再再详细一点。。。。。。谢谢哈~~~~为什么按无符号输出是这个数呢 这个 能告诉我是怎么算的吗 ..........................那个那个 答案我看懂了 能告诉我什么是无符号输出吗 ????是不是就是转换成十进制输出???
这个u%是按无符号输出,而你这个变量就是按照无符号输出,当然是65535.你期待的结果又是什么呢 还是不理解基础,你这个x变量里面存的数据,变成二进制表示就是1111111111111111,十六个一,不考虑符号位,你说这个数变成10进制是多少? 肯定是转成10进制了,如果你按照%d输出,那么刚才那个数最高位的1就变成符号位了,1代表负数,而负数是以补码存放的,把它还原成原码需要减1再取反,刚才你那个数就变成了这样,1000000000001,最高位那个1不算数字,代表负数,那么这样输出的结果就是-1,而%u是无符号输出,最高那一位不当作符号位。就没有上面这些转换过程了。
0xFFFF为十六进制数,用%u输出为十进制整数,所以要把0xFFFF以十进制数形式输出FFFF转化成十进制即为(16进制中A-F分别代表10-15):15*16^3+15*16^2+15*16^1+15=65535 无符号输出就是指输出正整数包括0;int无符号输出的取值范围是0到65535