C 構造体のビット フィールド セマンティクス: ":
C 構造体では、コロンの後にコロンが使用されます。数字には意味があります。これらは「ビット フィールド」として知られ、構造内の特定のフィールドに割り当てられるビット数を指定します。
ビット フィールド割り当て
コロン ( :) はフィールドのビット幅を示します。たとえば、次の例を考えてみましょう。
<code class="c">struct _USBCHECK_FLAGS { unsigned char DEVICE_DEFAULT_STATE : 1; unsigned char DEVICE_ADDRESS_STATE : 1; unsigned char DEVICE_CONFIGURATION_STATE : 1; unsigned char DEVICE_INTERFACE_STATE : 1; unsigned char FOUR_RESERVED_BITS : 8; unsigned char RESET_BITS : 8; };</code>
ここでは、DEVICE_DEFAULT_STATE と :1 とマークされたすべてのフィールドに、それぞれ 1 ビットが割り当てられます。 FOUR_RESERVED_BITS は 8 ビットを割り当て、RESET_BITS はさらに 8 ビットを割り当てます。
ビット フィールドの使用法
ビット フィールドは、それらが表す整数型のセマンティクスに従います。これらは、ビット幅に関係なく、通常の整数変数と同様に式で使用できます。
たとえば、上記の例で DEVICE_DEFAULT_STATE が 1 に設定されている場合、2 進算術演算中の値は 1 になります。
デフォルト アライメント
C 構造体では、ビット フィールドは連続して格納され、最下位ビットが最も小さい番号のフィールドに格納されます。ただし、ビット フィールドが :0 として定義されている場合は、次のフィールドが強制的に整数境界で開始され、最適な配置とメモリ使用率が保証されます。
例
次の構造体を考えてみましょう:
<code class="c">struct { int a : 4; int b : 13; int c : 1; };</code>
この場合、a の 4 ビットは自然に整数境界 (4 バイト) に揃うため、構造体のサイズは 3 バイトではなく 4 バイトになります。同様に、c の 1 ビットは次の整数境界と整列し、追加の 3 バイトが生じます。
要約すると、C 構造体のビット フィールドは、特定のビット パターンを表現および操作する便利な方法を提供します。コロンの後の数字は各フィールドのビット幅を決定し、サイズに関係なく、算術演算中に通常の整数のように動作します。
以上がC 構造体のビット フィールドにおけるコロンと数字 (:) の意味は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。