1.无符号整形输出
#includeint main(){ unsigned int a=0xffffffff; printf("%u\n",a);}
不能用%d输出。
#includevoid main(){ unsigned int a = 0xAAAAAAA7; unsigned char i = (unsigned char)a; char* b = (char*)&a; unsigned char* c = (unsigned char*)&a; //char 1个字节 unsigned char 1个字节 printf("%d %d\n",sizeof(char),sizeof(unsigned char)); printf("%d %d %d %d\n",sizeof(unsigned int),sizeof(unsigned char),sizeof(char *),sizeof(unsigned char *)); printf("% 8x, % 8x, % 3x,% 8x\n", a, i, *b, *c);}
输出: 1 14 1 4 4aaaaaaa7, a7, ffffffa7, a7
b或者c是指向a的内存,但是只是指向a的低字节内存。也就是0xA7。b是char*类型,所以把0xA7解释为负数,所以*b输出结果为0xffffffa7,等于-89。而c,为unsigned char*类型,*c的输出为167。