有些东西我不明白:
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 = 126
127 = 127
128 = -128
129 = -127
130 = -126
254 = -2
255 = -1
怎么会?