1
1 void main() 2 { 3 /* 4 short a = -1;采用有符号,和无符号输出的效果 5 */ 6 short a = -1; 7 //printf("%x\n", &a); 8 9 printf("%d\n",a); 10 /* 11 查看内存 12 ffff 十六进制 补码 13 1111 1111 1111 1111 二进制补码 14 1111 1111 1111 1110 二进制反码 15 1 000 0000 0000 0001 二进制原码 16 -1 十进制 17 所以:结果为-1. 18 19 */ 20 21 22 printf("%u",a); 23 24 /* 25 内存如下: 26 ffff 十六进制补码 27 1111 1111 1111 1111 二进制原码 28 65535 十进制 16位1的二进制转为十进制结果为65535 29 30 所以:结果为65535 31 32 //分析错了: 33 34 用printf("%u",a);打印结果都为4294967259 35 */ 36 37 38 39 getchar(); 40 }