私が得られないことがあります:
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
どうして?