Enum列舉
列舉型態在記憶體中儲存為整數。
enum宣告
語法1
enum 列舉類型名{常數名 = 值, 常數名 = 值, 常數名 = 值, ...};
列舉類型名 變數;
1
2
3
4
| enum DAY {
MON = 1, TUE = 2, WED = 3, THU = 4, FRI = 5, SAT = 6, SUN = 7
};
DAY day;
|
語法2
enum 列舉類型名{常數名 = 值, 常數名 = 值, 常數名 = 值, ...}變數;
1
2
3
| enum DAY {
MON = 1, TUE = 2, WED = 3, THU = 4, FRI = 5, SAT = 6, SUN = 7
} day;
|
變數設值
1
2
3
4
5
6
7
8
9
| int main() {
enum DAY {
MON = 1, TUE = 2, WED = 3, THU = 4, FRI = 5, SAT = 6, SUN = 7
};
DAY day;
day = WED;
printf("%d",day);
return 0;
}
|
不能直接給數字,以下編譯錯誤。
1
2
3
4
5
6
7
8
9
| int main() {
enum DAY {
MON = 1, TUE = 2, WED = 3, THU = 4, FRI = 5, SAT = 6, SUN = 7
};
DAY day;
day = 1;
printf("%d",day);
return 0;
}
|
使用強制轉型,可以把數字轉成列舉類型
預設值從0開始遞增
如果沒有給值,自動從0開始遞增。
1
2
3
4
5
6
7
8
9
10
11
| int main() {
enum DAY {
MON, TUE, WED, THU, FRI, SAT, SUN
};
DAY day;
for(int i = MON; i <= SUN; i++) {
day = (DAY) i;
printf("%d \n",day);
}
return 0;
}
|
列舉運算
列舉本身是整數。
1
2
3
4
5
6
7
8
9
10
| enum DAY {Sun, Mon, Tue, Wed, Thu, Fri, Sat};
int main() {
DAY day1, day2;
day1 = Mon;
day2 = Thu;
int diff = day2 - day1;
cout << "Days between = " << diff << endl;
return 0;
}
|
類別與Enum列舉
enum宣告
enum {girl = 0, boy = 1};
變數存放enum
要記得存放enum值的變數
指派enum給變數
在類別之外設定列舉
student.sex = student.girl;
完整程式碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| class Student {
public:
char name[50];
int sex;
enum {girl = 0, boy = 1};
private:
char address[100];
public:
int age;
private:
char father[50];
public:
void setName(const char* name1) {
strcpy(name, name1);
}
void setAge(const int age) {
this->age = age;
}
void print() {
cout << "name: " << name << endl;
cout << "age: " << age << endl;
cout << "sex: ";
if(sex == girl)
cout << "girl" << endl;
else
cout << "boy" <<endl;
}
};
int main() {
Student student;
student.setName("Bill");
student.setAge(20);
student.sex = student.girl;
student.print();
return 0;
}
|