void test02(void)
{
int a= -16;
printf("%u\n",a);//补码形式,自动转为unsigned
unsigned int j = b;
if (a>b) //比较int 转为 unsigned int 再比较,同 a+b>0结果相同
puts("负>正");
printf("%d\n",a+b);//有个中间变量接收a+b的值,输出的是中间变量,同int c;c=a+b
}
a+b默认返回的是无符号数,如果这样得到的是一个有符号数 int c;c=a+b;当然c<0,但a+b>0因为a+b=-6带有符号,已经超出了无符号数所能表示的范围了,在内存中存储的16进制补码形式为FFFA,即65530>0