位段以位為單位定義結構體(或共用體)中成員所佔儲存空間的長度。
含有位段的結構體型別稱為位段結構。
位段結構也是一種結構體型別,只不過其中含有以位為單位定義儲存長度的整數型別位段成員。採用位段結構既節省儲存空間,又可方便操作。
位段結構中位段的定義格式為:
unsigned 《成員名》:《二進位制位數》
例如:struct bytedata
data;
位段資料的引用:
同結構體成員中的資料引用一樣,但應注意位段的最大取值範圍不要超出二進位制位數定的範圍,否則超出部分會丟棄。
例如:data.a=2; 但 data.a=10;就超出範圍(a佔2位,最大3)
關於位段資料,注意以下幾點:
(1)乙個位段必須儲存在同一儲存單元(即字)之中,不能跨兩個單元。如果其單元空間不夠,則剩餘空間不用,從下乙個單元起存放該位段。
(2)可以通過定義長度為0的位段的方式使下一位段從下一儲存單元開始。
(3)可以定義無名位段。
(4)位段的長度不能大於儲存單元的長度。
(5)位段無位址,不能對位段進行取位址運算。
(6)位段可以以%d,%o,%x格式輸出。
(7)位段若出現在表示式中,將被系統自動轉換成整數
#include
#include
struct bytedata
data;
int main()
bit_f.id:10, bit_f.id:0x0, bit_f.msg:256
c語言 位段
位段 位段的宣告和結構是類似的,有兩個不同 1 位段的成員必須是int unsigned int char 或 signed int。2 位段的成員後邊有乙個冒號和乙個數字。例子 include include struct a struct b struct c int main 經過 驗證 1 ...
C語言位段
有時,儲存1個資訊不必占用1個位元組,只需二進位制的1個 或多個 位就夠用。如果仍然使用結構型別,則造成記憶體空間的浪費。為此,c語言引入了位段型別。位段的概念與定義 所謂位段型別,是一種特殊的結構型別,其所有成員均以二進位制位為單位定義長度,並稱成員為位段。例如,cpu的狀態暫存器,按位段型別定義...
C語言位域 位段
有些資訊在儲存時,並不需要占用乙個完整的位元組,而只需佔幾個或乙個二進位制位。例如開關只有通電和斷電兩種狀態,用0和1表示足以,也就是用乙個二進位。所以c語言又提供了一種資料結構,稱為位域或 位段。位域在應用開發中較少使用,你可以暫時跳過,遇到相關問題再回來溫習。所謂 位域 是把乙個位元組中的二進位...