前言
当无符号整型与有符号整型作比较时,无符号整形会变成有符号整型并且与当前比较值的符号相同。
1.所以用负数和无符号整型作比较常有乌龙。
如下代码:
int main()
{
int i = 0;
i--;
if (i > sizeof(i))
{
printf(">\n");
}
else
{
printf("<\n");
}
return 0;
}
如果是两个整形相比较,那么结果应该是 -1<4;
这说明 当两者比较时 sizeof(i) == -4,而用正数作比较时 又恢复正常