enum 的範圍與size

2021-04-16 14:05:10 字數 584 閱讀 6132

一、enum的取值範圍

c++標準規定超出列舉型別表示範圍的賦值結果是undefined的。

enum的取值範圍和 int 的範圍並不是直接一致的。計算enum的取值範圍,可以按如下方式操作:

1、不考慮負數:獲取enum中的最大值,根據這個最大值所具有的位數,可以計算enum的表示範圍。

舉個例子:enum test;最大值為4,二進位制表示為100,3bits,因為3bits表示的範圍是0~7,所以test的取值範圍就是[0, 7];

2、考慮負數情況。負數情況下,需要多一位的符號位,其本質還是一樣的。

比如:enum test; 絕對值最大值為4,需要3bits,由於4不是負數,還需要增加一位符號位,4bits,其表示範圍就是1000~0111,所以test的取值範圍就是[-8, 7]。

如果是enum test; 則僅僅3bits就足夠了,因為 100 就是 -4。

二、enum的size

c++標準規定,enum的size只要能夠容納定義時刻的所有bits就可以了,具體取什麼值,由編譯器決定。比如enum test;僅需要3bits,那麼可以取1b,也可以取4b,由編譯器自己決定。vc中是固定取4b空間。

Input的size與maxlength屬性的區別

最近做專案用到input的size和maxlength屬性,以前只顧用沒有用心去看看這2個標籤的區別,今天週末baidu了一下,有所理解。特記錄於此!name name2 maxlength 5 則input輸入框中只能夠輸入5個字元 size 5 表示input輸入框只顯示5個可見的字元,但你可以...

mongo的 size與count的區別

參考檔案 size count 初用mongo 在命令列行中的執行查詢結果數量的語句 所以記錄一下 防止忘記 這兩個是完全不同的用法 size是查詢一定元素的數量且是陣列的字段 用法 db collection.find eg db.getcollection report find 查詢sid 是...

enum與typedef enum的用法

一,兩者的用法 列舉型別定義用關鍵字enum標識,形式為 enum 識別符號 列舉資料 列舉常量 是一些特定的識別符號,識別符號代表什麼含義,完全由程式設計師決定。資料列舉的順序規定了列舉資料的序號,從0開始,依次遞增。enum status 列舉型別status僅有兩個資料,乙個是copy,乙個是...