c語言 位段

2021-09-01 13:24:58 字數 1012 閱讀 3708

位段

位段的宣告和結構是類似的,有兩個不同:

1、位段的成員必須是int、unsigned int、char 或 signed int。

2、位段的成員後邊有乙個冒號和乙個數字。

例子:

#include #include struct a

;struct b

;struct c

;

int main()

經過**驗證:

1、位段的大小由成員型別決定,它的演算法是能放下就放下,放不下了再單獨開闢。

2、位段使用非常依賴於平台。

3、使用位段必須考慮位段的可移植性。

位段的記憶體分配

1、位段的成員可以是int、unsigned int 、signed int或者

char(屬於整形家族型別)型別。

2、位段的空間是按照需要以4個位元組(int)或者乙個位元組(char)的方式開闢的。

3、位段是不跨平台的,可移植的程式避免使用位段。

例子:

#include #include struct s

;int main()

vs2008:&s是這樣的。

畫圖給大家解釋一下吧!

位段的跨平台問題

1、int位段被當成有符號還是無符號不確定的。

2、位段中最大位數的數目不能確定。(16位機器最大16,32位機器最大32,寫成

27在16位機器會出現問題。

3、位段的成員在記憶體中記憶體分配從左向右還是從右向左尚未定義。

4、當乙個結構體包含兩個位段,第二個位段成員比較大,無法容納於第乙個位段

剩餘時,是捨棄還是利用的,這也是不確定的。

C語言位段

有時,儲存1個資訊不必占用1個位元組,只需二進位制的1個 或多個 位就夠用。如果仍然使用結構型別,則造成記憶體空間的浪費。為此,c語言引入了位段型別。位段的概念與定義 所謂位段型別,是一種特殊的結構型別,其所有成員均以二進位制位為單位定義長度,並稱成員為位段。例如,cpu的狀態暫存器,按位段型別定義...

C語言位域 位段

有些資訊在儲存時,並不需要占用乙個完整的位元組,而只需佔幾個或乙個二進位制位。例如開關只有通電和斷電兩種狀態,用0和1表示足以,也就是用乙個二進位。所以c語言又提供了一種資料結構,稱為位域或 位段。位域在應用開發中較少使用,你可以暫時跳過,遇到相關問題再回來溫習。所謂 位域 是把乙個位元組中的二進位...

C語言位域 位段

有些資訊在儲存時,並不需要占用乙個完整的位元組,而只需佔幾個或乙個二進位制位。例如開關只有通電和斷電兩種狀態,用0和1表示足以,也就是用乙個二進位。所以c語言又提供了一種資料結構,稱為位域或位段。位域在應用開發中較少使用,你可以暫時跳過,遇到相關問題再回來溫習。所謂 位域 是把乙個位元組中的二進位劃...