C 中的位域:理解:1、:7、:16 和:32
在C 中,程式設計師使用位元域來建立具有佔用指定位數的成員的資料結構。這個概念通常使用冒號 (:) 後面跟著一個數值來表示。
考慮以下範例:
unsigned char a : 1; unsigned char b : 7;
在此程式碼中,冒號和下列數字(:1 和:7) 表示變數a和b各自的位元大小。這表示 a 是單一位,而 b 佔用 7 位。
位元欄位通常用於建立打包資料結構,其中透過限制每個成員的位元大小來最小化結構的大小。例如,在以下 tOneAndSevenBits 結構體中:
typedef struct { unsigned char a : 1; unsigned char b : 7; } tOneAndSevenBits;
該結構體佔用 8 位,其中 1 位分配給 a,7 位分配給 b。
位元欄位也可以用來存取壓縮值。考慮以下範例:
typedef struct { unsigned char leftFour : 4; unsigned char rightFour : 4; } tTwoNybbles;
此結構建立一個資料類型,其中兩個 4 位元半位元組(半位元組)打包到單一 8 位元位元組中。
C 11 標準更詳細地定義位元欄位:
「可選的屬性說明符屬於正在宣告的實體。位元欄位屬性不是實體的一部分類別成員類型的常數表達式應是值大於或等於零的整數常數表達式。
以上是什麼是 C 語言中的位元字段以及 :1、:7、:16 和 :32 如何指定其大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!