0

こんにちは、私は次のコードを書きました:

union endian {
    char a;
    int  b;
} test;
char c;

test.b = 0xaabbccdd;
c =  (char)test.a;
printf("0x%x\n", c);
printf("0x%x\n", test.b);
printf("0x%x\n", test.a);
printf("0x%x\n", (char)test.a);

しかし、出力は次のとおりです。

0xffffffdd
0xaabbccdd
0xffffffdd
0xffffffdd

0xffffffchar 変数の前に先頭がある理由を知りたいです。

4

2 に答える 2