私は、char が 1 バイトを取るウィンドウでターボ C に取り組んでいます。今、私の問題は以下のユニオンにあります。
union a
{
unsigned char c:2;
}b;
void main()
{
printf("%d",sizeof(b)); \\or even sizeof(union a)
}
このプログラムは出力を 2 として出力していますが、ユニオンは 1 バイトしかとらないはずです。なぜそうなのですか?
構造体の場合、1バイトを指定しても問題ありませんが、この共用体は不適切に機能しています。
そして、これらのビット フィールドにアクセスする方法がもう 1 つあります。
scanf("%d",&b.c); //even scanf("%x",b.c);
ビットのアドレスを取得できないため、機能していません。したがって、以下のような別の変数を使用する必要があります
int x;
scanf("%d",&x);
b.c=x;
避けられないの??他に方法はありますか???