ビットフィールドの仕組みについてもう少し理解しようとしています。
次のコードが与えられた場合: int が 32 ビットであると仮定します。
#include <stdio.h>
int main()
{
struct byte
{
int one:1;
};
struct byte var = {3};
printf("%d\n", var.one);
printf("%#x\n", var);
return 0;
}
私が得る出力は次のとおりです。
-1 0x1
しかし、私は次のことを期待していました:
-1 0x3
以来
struct byte var = {3};
int の 4 バイトに値 3 を代入していますね。
私が実際に得た出力から、上記のコード行が値 3 を 1 ビット フィールドに格納しようとしているように見えるため0x1
、2 番目の出力行として出力されます。
だから私の質問は次のようになります:
構造全体に対するこれらの初期化と割り当てはどのように機能しますか?
また、なぜ{}
必要なのですか?