C enums – tạm gọi kiểu liệt kê

Trong hướng dẫn này, bạn sẽ tìm hiểu về enum (liệt kê) trong lập trình C với sự trợ giúp của các ví dụ.

Trong lập trình C, kiểu liệt kê (còn gọi là enum) là kiểu dữ liệu bao gồm các hằng số tích phân. Để xác định enums, enumtừ khóa được sử dụng.

enum flag {const1, const2, ..., constN};

Theo mặc định, const1 là 0, const2 là 1, v.v. Bạn có thể thay đổi giá trị mặc định của các phần tử enum trong khi khai báo (nếu cần).

// Changing default values of enum constants
enum suit {
    club = 0,
    diamonds = 10,
    hearts = 20,
    spades = 3,
};

Khai báo kiểu được liệt kê

Khi bạn xác định một kiểu enum, bản thiết kế cho biến sẽ được tạo. Đây là cách bạn có thể tạo các biến kiểu enum.

enum boolean {false, true};
enum boolean check; // declaring an enum variable

Tại đây, một kiểm tra biến của loại enum booleanđược tạo.

Bạn cũng có thể khai báo các biến enum như thế này.

enum boolean {false, true} check;

Ở đây, giá trị của falsebằng 0 và giá trị của truebằng 1.

Ví dụ: Kiểu liệt kê

#include <stdio.h>

enum week {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};

int main()
{
    // creating today variable of enum week type
    enum week today;
    today = Wednesday;
    printf("Day %d",today+1);
    return 0;
}

Đầu ra

Day 4

Tại sao enums được sử dụng?

Một biến enum chỉ có thể nhận một giá trị. Đây là một ví dụ để chứng minh điều đó,

#include <stdio.h>

enum suit {
    club = 0,
    diamonds = 10,
    hearts = 20,
    spades = 3
} card;

int main() 
{
    card = club;
	printf("Size of enum variable = %d bytes", sizeof(card));	
	return 0;
}

Đầu ra

Size of enum variable = 4 bytes

Đây, chúng tôi đang nhận được 4vì kích thước của intlà 4 byte.

Điều này làm cho enum trở thành một lựa chọn tốt để làm việc với các cờ.

Làm thế nào để sử dụng enum cho cờ?

Chúng ta hãy lấy một ví dụ,

enum designFlags {
	ITALICS = 1,
	BOLD = 2,
	UNDERLINE = 4
} button;

Giả sử bạn đang thiết kế một nút cho ứng dụng Windows. Bạn có thể đặt cờ ITALICS , BOLD và UNDERLINE để làm việc với văn bản.

Có một lý do tại sao tất cả các hằng số tích phân là lũy thừa của 2 trong mã giả trên.

// In binary

ITALICS = 00000001
BOLD = 00000010
UNDERLINE = 00000100 

Vì các hằng số tích phân là lũy thừa của 2, bạn có thể kết hợp hai hoặc nhiều cờ cùng một lúc mà không trùng lặp bằng cách sử dụng bitwise OR | nhà điều hành . Điều này cho phép bạn chọn hai hoặc nhiều cờ cùng một lúc. Ví dụ,

#include <stdio.h>

enum designFlags {
	BOLD = 1,
	ITALICS = 2,
	UNDERLINE = 4
};

int main() {
	int myDesign = BOLD | UNDERLINE; 

        //    00000001
        //  | 00000100
        //  ___________
        //    00000101

	printf("%d", myDesign);

	return 0;
}

Đầu ra

5

Khi kết quả đầu ra là 5, bạn luôn biết rằng chữ in đậm và gạch chân được sử dụng.

Ngoài ra, bạn có thể thêm cờ theo yêu cầu của mình.

if (myDesign & ITALICS) {
    // code for italics
}

Ở đây, chúng tôi đã thêm chữ nghiêng vào thiết kế của mình. Lưu ý, chỉ mã cho chữ in nghiêng được viết bên trong ifcâu lệnh.

Bạn có thể thực hiện hầu hết mọi thứ trong lập trình C mà không cần sử dụng các phép liệt kê. Tuy nhiên, chúng có thể khá tiện dụng trong một số tình huống nhất định.









Gõ tìm kiếm nhanh...