参考ページのCコードサンプルです。
signed int _exponent:8;
「8」と「8」自体の前のコロンの意味は何ですか?
それはビットフィールドです。これはstruct
定義でのみ有効であり、システムが整数に8ビットのみを使用することを意味します。
それはビットフィールドであり、構造のあいまいで誤った特徴です。他の人のコードのビットフィールドを処理するために知っておく必要のある情報を検索するには、これで十分です。独自のコードについては、ビットフィールドを使用しないでください。
編集: Zackが要求したように、ビットフィールドには、独自のビット演算を実行する場合に比べて重大な欠点があり、利点はありません。それらのいくつかを次に示します。
シングルビットフラグの場合、ビットフィールドの代わりに独自のビット演算を使用するのは非常に簡単です。パックする必要のある大きな値の場合、すべてのビット演算をあちこちに書き出すのが面倒な場合は、いくつかの単純なマクロを記述します。
ビットフィールド 仕様です。
これは、_exponent
が8
からsigned int
ビットのみを取得することを意味します。これは通常、8
ビットより多くを取得します。通常、ビットフィールドは符号なしタイプで使用されます。
IIRC、コンパイラは、8ビットに収まらないものが_exponent
に書き込まれた場合に警告します。
そのステートメントが構造内にある場合、 ビットフィールド を意味します。