亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

結構聲明中的冒號意味著什么,例如:1、:7、:16或:32?

結構聲明中的冒號意味著什么,例如:1、:7、:16或:32?

C++
ABOUTYOU 2019-06-24 17:10:05
結構聲明中的冒號意味著什么,例如:1、:7、:16或:32?下面的C+代碼是什么意思?unsigned char a : 1; unsigned char b : 7;我猜它創建了兩個字符a和b,它們都應該有一個字節長,但是我不知道“:1”和“:7”部分做了什么。
查看完整描述

3 回答

?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

1和7是限制值范圍的位大小。它們通常存在于結構和結合中。例如,在某些系統上(取決于char寬度和包裝規則等),代碼:

typedef struct {
    unsigned char a : 1;
    unsigned char b : 7;} tOneAndSevenBits;

創建一個8位值,1位用于a和7位b.

通常在C中用于訪問“壓縮”值,例如包含在8位字符的上半部分的4位ny球:

typedef struct {
    unsigned char leftFour  : 4;
    unsigned char rightFour : 4;} tTwoNybbles;

對于我們當中的語言律師來說,C+11標準的9.6節詳細解釋了這一點,稍作解釋:


位字段

窗體的成員聲明符。

     標識符選擇屬性說明符選擇   :   常數表達式

指定位字段;其長度由冒號從位字段名開始。任選屬性說明符與被申報的實體有關。位字段屬性不是類成員類型的一部分.

這個常數表達式為積分常量表達式,其值大于或等于零。積分常量表達式的值可能大于位字段類型對象表示中的位數;在這種情況下,額外的位被用作填充位,而不參與位字段的值表示。

類對象中位字段的分配是實現定義的.位字段的對齊是實現定義的.位字段被打包到一些可尋址的分配單元中。

注:一些機器上的位域跨分配單元,而另一些機器上沒有。在一些機器上,位字段從右到左,在另一些機器上,從左到右.-尾注


查看完整回答
反對 回復 2019-06-24
?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

我相信那應該是比特菲爾德。


查看完整回答
反對 回復 2019-06-24
  • 3 回答
  • 0 關注
  • 725 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號