#include<stdio.h>
main()
{
short i=-1;//短整型站两个字节
也就是16位 1111 1111 1111 1111(FFFF)
//要知道有符号的数据类型都是用它的补码来存储的
那么 16个1就是-1的补码
short *p = &i;
printf("%d,%o,%x,%u\n",i,i,i,i);
//-1,37777777777,ffffffff,4294967295
//第一个输出-1没有疑问吧
那是译码器把16个1翻译成了-1的补码 所以是-1
//第二个8进制 他会这样翻译001 111 111 111 111 111 (177777因为16%3 = 1) 但是他还是输出
//37777777777 那是因为编译器用了4个字节来表示了短整型 32%3 = 2 所以最高位是3
//第三个
你只要吧第二个看明白了
第三个你就明白了
//第四个那是4字节无符号整数的最大值 也就是2^32-1
}