#include<stdio.h> void main() { unsigned int a=65535; int b =-2; printf("a=%d,%o,%x,%u\n",a,a,a,a);
#include<stdio.h> void main() { unsigned int a=65535; int b =-2; printf("a=%d,%o,%x,%u\n",a,a,a,a);
日期:2013-06-10 11:07:06 人气: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 这就是十进制的1了
再