main() { unsigned int a; int b=-1; a=b; printf("%u",a); } 程序运行后的输出结果是
main() { unsigned int a; int b=-1; a=b; printf("%u",a); } 程序运行后的输出结果是
日期:2017-07-01 21:34:02 人气:1
如果你的编译环境定位int型是16位(如Turbo C),int型的表示范围是[-32768,32767]。
a是无符号整数,b是有符号整数。区别是a的最高位表示数值,b的最高位表示符号(1表示负数,0表示非负数)
a得到-1。
[-1]原码:1000 0000 0000 0001
按除符号位外,各位取反,末位加1的规则,将负数的原码转换为补码:
[-1]补码:1111 1111 1111 1111
即无符号数a的二进制最终表示是11111111 11111111,对应十进制是65535,