私が理解している限り、K&R から C のユニオンについて読んでいましたが、ユニオン内の単一の変数はいくつかの型のいずれかを保持でき、何かが 1 つの型として格納され、別の型として抽出された場合、結果は純粋に実装定義されます。
次のコード スニペットを確認してください。
#include<stdio.h>
int main(void)
{
union a
{
int i;
char ch[2];
};
union a u;
u.ch[0] = 3;
u.ch[1] = 2;
printf("%d %d %d\n", u.ch[0], u.ch[1], u.i);
return 0;
}
出力:
3 2 515
ここでは、 に値を代入していますが、とのu.ch
両方から取得しています。実装定義ですか?それとも私は本当にばかげたことをしていますか?u.ch
u.i
他のほとんどの人にとっては非常に初心者に見えるかもしれませんが、その出力の背後にある理由を理解することはできません.
ありがとう。