c语言 段位,C语言 段位
C語言允許在一個結構體中以位為單位來指定其成員所占內存長度,這種以位為單位的成員稱為“位段”或“位域”
在結構體中位段的定義格式為:
unsignede :;
例如:
structbytedata{
unsigned a:2; /*位段a,占2位*/unsigned b:6; /*位段b,占6位*/}data;
引用結構體的位段成員同引用結構體其他類型成員一樣,但應注意位段的最大取值范圍不要超出二進制位數限制的范圍,否則超出部分會丟失。
例如:
data.a = 2; ?/*正確*/
data.b = 10;/*錯誤,超出范圍(a占2位,能容納的最大值為3)*/
關于位段,還需要注意以下幾點:
(1)位段成員的數據類型必須是unsigned.
(2)可以定義長度為0的位段。這使下一位段從下一存儲單元(一個存儲單元一般是兩個字節)開始。例如:
structbytedata{
unsigned a:1;
unsigned b:2;
unsigned:0;
unsigned c:3;
};
本來a、b、c應連續存放在一個存儲單元中,但由于用長度0的位段將b、c隔開,現只能將a、b存放在一個存儲單元中,而c另存放在下一個單元中
(3)位段不能跨單元存儲,如果上一單元的剩余空間不夠存儲新的位段,則跳過此剩余空間,將該位段存放在下一個單元中
(4)可以定義無名位段,但其空間不能使用。
structbytedata{
unsigned a:1;
unsigned:2; /*無名位段,占2位,不能使用*/unsigned c:3;
};
(5)一個位段的長度不能大于一個存儲單元的長度。
(6)不能定義位段數組。
(7)位段可以以%d、%u、%o、%x等格式輸出。
(8)位段若出現在表達式中,將被系統自動轉換成整型數。
位段排序:
先定義先排序
原文:http://www.cnblogs.com/Caden-liu8888/p/5939004.html
總結
以上是生活随笔為你收集整理的c语言 段位,C语言 段位的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python argparse_Pyth
- 下一篇: slope one 推荐算法python