枚舉 enum:創建符號常量的方式 enum spectrum { red, orange, yellow, green, blue, violet, indigo, ultraviolet }; spectrum 被稱為枚舉,red 等作為符號常量,這些符號常量叫做枚舉量。 預設將整數值賦給枚舉量 ...
枚舉
- enum:創建符號常量的方式
-
enum spectrum { red, orange, yellow, green, blue, violet, indigo, ultraviolet };
spectrum 被稱為枚舉,red 等作為符號常量,這些符號常量叫做枚舉量。
- 預設將整數值賦給枚舉量,第一個枚舉量為 0,第二個為 1,依此類推;
- 在不進行強制類型轉換的情況下,只能將定義枚舉時使用的枚舉量賦給這種枚舉的變數。
- 枚舉量是整型,可被提升為 int 型,但 int 類型不能自動轉換為枚舉類型。
- 可以通過賦值運算符顯示地設置枚舉量的值,指定的值必須是整數:
enum bits{one=1, two=2, four=4, eight=8}
也可以只顯式地定義其中一些枚舉量地值:
enum bigstep{first, second=100, third};
註意:
-
後面沒有被初始化的枚舉量的值將比其前面的枚舉量大 1,first 未初始化時預設為 0.
- 可以創建多個值相同的枚舉量。
- C++ 早期版本只能將 int 值(或提升為 int 的值)賦給枚舉量,但這種限制取消了,因此可以使用 long 甚至 long long 類型的值。
-
- 如果 int 值是有效的,則可以通過強制類型轉換,將它賦給枚舉變數;如果試圖對一個不適當的值進行強制類型轉換,結果是不確定的。
- C++ 通過強制類型轉換,增加了可賦給枚舉變數的合法值,即使這個值不是枚舉值。取值範圍:
- 上限:大於最大值的、最小的 2 的冪減去 1 。
- 下線:找到最小值
- 若不小於 0 ,下限為 0 。
- 小於 0 ,採取與尋找上限方式相同,但加上負號。如 -6 對應 -8 。