环境: 32位系统; char 为8位; unsigned char i = -1; if (i == -1) printf("i == -1"); else printf("i != -1"); 实际上i不等于-1,因为i是8位,16进制值是0xff,而-1在32位系统下是0xffffffff; 所以i不等于-1;