結構體中定義變量時,出現冒號+數字的形式(位域定義)


該種形式出現於結構體或共用體的定義中,是位域定義的標准形式。
其使用方式為
struct name
{
type var_name : n;

};
含義為,在結構體name匯總,成員變量var_name占用空間為n位。
n為正整數,其值必須小於type類型占用的位數。比如type如果是int,占4字節32位,那么n必須是1~31之間的整數。
對於位域類型的成員,在賦值時如果實際值超過n位所能表達的范圍,那么超出部分將會被截掉,只保存低位值。如int var:4,本身只有4位的空間,如果賦值var = 20, 由於20的二進制值為10100,實際為五位,這時var實際被賦值的就是低四位,0100,即4。

由於C語言中的地址是針對字節計算的,所以位域類型的成員變量不支持取地址操作,即對於變量v, 如果存在位域成員變量var,那么&a.var是非法的,編譯會出錯。

 

 

轉自百度知道:https://zhidao.baidu.com/question/496863114900650484.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM