首先看一个例子:
{
int i = 0x000010d8;
char char_i = (char)i;
unsigned char unsigned_char_i = (unsigned char)i;
printf("char_i = %x\n", char_i);
printf("unsigned_char_i = %x\n", unsigned_char_i);
}
输出结果为:
,即当8位的char型变量在最高位为1时,其余高位也将补一,这一现象有时可能会带来隐患。。。。因此在需要8位变量作为计数使用时,应该尽量使用无符号型unsigned char。