1,列舉
1.1 基本使用
#include <iostream>
using namespace std;
// 列舉對應的值為[0,1,2,3]
enum color {red, blue, green, yellow};
int main()
{
color c;
c = red;
cout << c << endl;
// 整形賦值需要強制型別轉換
c = (color)2;
cout << c << endl;
// 超出變數範圍不會報錯,但是不提倡使用,也不應該依賴該值
// 是非法的
c = (color)1024;
cout << c << endl;
// 列舉值可自動轉換為int
int n = blue;
cout << n << endl;
}
// 列舉值不支援除了=之外的其他運算子,比如+,-等。這是不合法的。列舉沒有定義這些符號。
1.2 列舉賦初值
#include <iostream>
#include <stdio.h>
using namespace std;
// 列舉對應的值為[0,3,4,0,1]
enum color {red, blue=3, green, yellow=0, orange};
// 從0開始,其中沒有賦值的將向前查詢最近的有賦值的元素然後自然增長,依次類推
int main()
{
printf_s("%d %d %d %d %d\n", red, blue, green, yellow, orange);
}
1.3 列舉的範圍
// 現代c++可以透過強制型別轉換將int值轉換為列舉值
// 每個列舉都有其合法的取值範圍,其範圍為:
// 上限:取大於列舉最大值最小的2的冪值-1,
// 下限:如果為最小值為正數,則下限取0,如果為負數,取小於列舉最小值最大的2的冪值+1,
enum bits {value=-6, one=1, two=2,eight=8};
// bits的合法的上限為:bits最大的值為8,則大於列舉最大值8最小的2的冪為16,-1則為15
// bits的合法下限位:bits最小的值為-6,則小於列舉最小值-6的最大的2的冪為-8,+1則為-7,
//所以bits的合法範圍為[-7,15]