は私の問題のコードです:符号なしchar c = 255は "11111111"ですか?ここ
#include "stdio.h"
int main()
{
char a = -1;
unsigned char b = 255;
unsigned char c = 0;
if((~a) == c)
printf("OK 1");
else
printf("bad 1");
printf("\n");
if((~b) == c)
printf("OK 2");
else
printf("bad 2");
printf("\n");
}
私は印刷にこれを期待:
OK 1
OK 2
しかし、私はOK 1と悪い2を入手します!
unsigned char b
が255(11111111)の場合、〜bは00000000にする必要があります。なぜcと等しくないのですか?
私はLinux SUSEでgccを使用しています。
あなたはその証拠にいくつかのコードを使用することはできますか?想像するのは難しい –
*あなたの*コードがそれを証明します。それはCの仕組みです。 –
OK、あなたは正しいです。 –