有一例题如下: main() { unsigned int a=65535; printf("a=%d,%o,%x,%X,%u\n",a,a,a,a,a); } 求运行结果。
有一例题如下: main() { unsigned int a=65535; printf("a=%d,%o,%x,%X,%u\n",a,a,a,a,a); } 求运行结果。
日期:2010-11-09 23:39:00 人气:2
这里说是不对的。
要看什么机器什么的编译器才能得出结果。
的确a=65535 十六进制是0xFFFF
但如果unsigned int 类型是4字节的,你打印出来的依然是
a=65535
如果unsigned int 类型是2字节的,这时就是-1了
因为计算机采取的是补码来保存数据的
a=65535 二进制就是1111 1111 1111 1111,这是补码,第一位是符号位,等于1时就表示是负数。
111 1111 1111 1111 减1再取反就是000 0000 0000 0001 这就