有些东西我不明白:
C 中的Asigned char用 8 位表示:00000000
- 0 是
0000 0000=> 0 - 1
0000 0001=> 1 - ...
- 127
0111 1111=> 127
所以我认为第 8 位是符号位。所以我认为:
- 128
1000 0000=> 0 - 129
1000 0001=> -1
但不是!
尝试这个:
int main(int argc, const char *argv[])
{
int i;
for (i = 0; i < 256; i++) {
printf("%3d = %d\n", i, (signed char)i);
}
return 0;
}
你得到:gcc -o tt tt.c ; ./tt | more
- ...
126 = 126127 = 127128 = -128129 = -127130 = -126254 = -2255 = -1
怎么会?