Kiểu dữ liệu enum trong C++

1. Kiểu dữ liệu enum

Còn gọi là kiểu dữ liệu liệt kê. Mọi giá trị trong kiểu enum có thể được định nghĩa là hằng số ký hiệu. Enum có thể được xem như một tập hợp các hằng số.

enum Color
{
 RED,
 BLUE,
 GREEN
};

Ví dụ một kiểu enum

Khi nào cần sử dụng kiểu dữ liệu enum?

Với các chương trình lớn, nhìn những hằng số như -1, 1, 2,… chúng ta sẽ không biết ý nghĩa của chúng là gì. Chúng có thể là:

    • Lựa chọn mà người dùng nhập vào
    • Một tháng trong năm hay một ngày trong tháng
    • Một ký hiệu về màu sắc

Để tăng tính dễ đọc, dễ hiểu, dễ bảo trì, các hằng số nên được ký hiệu hoá bởi một tên. Tên này được người lập trình tự định nghĩa và thể hiện ý nghĩa của các hằng số. Do đó, chúng ta nên dùng enum.

Ví dụ: Khi đọc một file ta có ký hiệu các trạng thái: mở file lỗi -1, đọc file lỗi -2, phân tích file lỗi -3, đọc file thành công 0.


int readFileContents()
{
    if (!openFile())
        return -1;
    if (!readFile())
        return -2;
    if (!parseFile())
        return -3;
    return 0;//success
}

Nếu các trạng thái được ký hiệu là số -3, -2, -1, 0 sẽ rất khó nhớ, khó hiểu

Ta có thể sử dụng kiểu enum như sau để dễ nhớ, dễ hiểu hơn.

enum ParseResult
{
    SUCCESS = 0,
    ERROR_OPENING_FILE = -1,
    ERROR_READING_FILE = -2,
    ERROR_PARSING_FILE = -3
};
 
ParseResult readFileContents()
{
    if (!openFile())
        return ERROR_OPENING_FILE;
    if (!readFile())
        return ERROR_READING_FILE;
    if (!parsefile())
        return ERROR_PARSING_FILE;
 
    return SUCCESS;
}

2. Định nghĩa một enum trong C++

Chúng ta sử dụng từ khóa “enum” để tự định nghĩa một kiểu dữ liệu enum. Cú pháp:

Kiểu dữ liệu enum trong c++

Trong đó, “enum” là từ khóa để định nghĩa một enum, “data type” là tên của dữ liệu enum được định nghĩa, “members” là các hằng số được định nghĩa trong enum, cách nhau bởi dấu phẩy “,”. thường viết hoa.

enum Color {RED, BLUE,GREEN};
Color cred = RED;

Có thể khai báo một biến cred từ kiểu enum Color vừa định nghĩa

Khi một tên của thành viên trong enum được sử dụng trong nhiều enum khác nhau có thể gây ra lỗi:

enum Color
{
 RED,
 BLUE,
 GREEN
};

enum Feeling
{
 HAPPY,
 TIRED,
 BLUE
};

Error:

error C2365: 'BLUE' : redefinition; previous definition was 'enumerator'

3. Hiểu về các giá trị trong enum

Các giá trị trong enum được tự động gán một con số nguyên. Hằng đầu tiên là 0, kế tiếp là 1,… Về bản chất, kiểu dữ liệu enum là tập hợp các số nguyên được thể hiện qua ký hiệu hằng số.

enum Color
{
 RED,//0
 BLUE,//1
 GREEN//2
};

Giá trị của các thành viên trong enum tự động tăng lên 1

Các bạn cũng có thể thay đổi giá trị mặc định cho các thành viên trong enum.

enum Color
{
 RED,//0
 BLUE=3,
 GREEN//4
};

Gán BLUE=3, GREEN=4 (tự động tăng lên 1)

4. Các ví dụ sử dụng enum

Xuất giá trị của enum

#include <iostream>
using namespace std;

int main()
{
	enum colors {RED, GREEN, BLUE};
	colors b = BLUE, c = GREEN;
	cout<<"b= "<<b<<"\n";
	cout<<"c= "<<c<<"\n";
	system("pause");
}

Kết quả:

b= 2
c= 1

Xử lý từng trường hợp nếu thỏa điều kiện với enum

#include <iostream>
using namespace std;

int main()
{
	enum colors {RED, GREEN, BLUE};
	colors color = GREEN;
    if (color == RED)
        cout << "open red door";
    else if (color == GREEN)
		cout << "open green door";
	else if (color == BLUE)
		cout << "open blue door";
	else cout<<"close door";
	system("pause");
}

Kết quả:

open green door
5/5 - (1 bình chọn)
Chia sẻ trên mạng xã hội:

Trả lời

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.