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, enum
từ 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 false
bằng 0 và giá trị của true
bằ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 int
là 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 if
câ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.