Enum trong C

Enum trong C

1 / 3 ❮ ❯ Enum trong C Hàm ftell() trong C Preprocessor trong C Enum trong C là kiểu […]

Learn more »



Enum trong C



Enum trong C là kiểu dữ liệu do người dùng định nghĩa. Nó được sử dụng chủ yếu để gán các tên cho các hằng số, các tên giúp một chương trình dễ đọc và bảo trì.

Từ khóa ‘enum‘ được sử dụng để khai báo các kiểu liệt kê mới trong C và C++. Sau đây là cú pháp về khai báo enum.

Cú pháp:

enum enum_name{constant1, constant2, constant3, .......}; 

Các biến enum có thể được định nghĩa theo 2 cách:

// trong ca 2 truong hop duoi day, "day"  // duoc dinh nghia nhu bien cua kieu week  enum week{Mon, Tue, Wed}; enum week day;  // hoac  enum week{Mon, Tue, Wed} day; 

Ví dụ sử dụng enum trong C:

#include<stdio.h>   enum week{Mon, Tue, Wed, Thur, Fri, Sat, Sun};  int main() {     enum week day;     day = Wed;     printf("Chi so cua Wed la %dn", day);          // duyet tat ca cac chi so phan tu cua enum week     int i;      for (i = Mon; i <= Sun; i++)         printf("%d ", i);     return 0; } 

Kết quả:

Chi so cua Wed la 2 0 1 2 3 4 5 6 

Trong ví dụ này, vòng lặp for sẽ chạy từ i = 0 đến i = 6, như ban đầu giá trị của i là Mon là 0 và giá trị của tháng Sun là 6.


Đặc điểm thú vị về khơi tạo enum

1. Hai biến enum có thể có cùng giá trị. Ví dụ, trong chương trình C sau cả ‘Failed’ và ‘Error’ có cùng giá trị 0.

#include <stdio.h>   enum status {Working = 1, Failed = 0, Error = 0};    int main() {    printf("%d, %d, %d", Working, Failed, Error);    return 0;  } 

Kết quả:

1, 0, 0 

2. Nếu chúng ta không gán giá trị cho tên enum một cách rõ ràng, trình biên dịch theo mặc định gán giá trị bắt đầu từ 0. Ví dụ, trong chương trình C sau, sunday sẽ nhận giá trị 0, sunday được 1, v.v.

#include <stdio.h>  enum day {sunday, monday, tuesday, wednesday, thursday, friday, saturday};    int main() {     enum day d1 = monday;     enum day d2 = tuesday;     printf("So ngay duoc luu tru trong bien d1 la %dn", d1);     printf("So ngay duoc luu tru trong bien d2 la %dn", d2);     return 0; }  

Kết quả:

So ngay duoc luu tru trong bien d1 la 1 So ngay duoc luu tru trong bien d2 la 2 

3. Chúng tôi có thể gán giá trị cho một số tên theo bất kỳ thứ tự nào. Tất cả các tên chưa được chỉ định nhận giá trị là giá trị của tên trước đó cộng với một.

#include <stdio.h>  enum day {sunday = 1, monday, tuesday = 5,           wednesday, thursday = 10, friday, saturday};    int main() {     printf("%d %d %d %d %d %d %d", sunday, monday, tuesday,             wednesday, thursday, friday, saturday);     return 0; } 

Kết quả:

1 2 5 6 10 11 12 

4. Giá trị được gán cho tên enum phải là một số hằng số nguyên, tức là, giá trị phải nằm trong phạm vi từ giá trị nguyên nhỏ nhất có thể đến giá trị nguyên lớn nhất.

5. Tất cả các hằng số enum phải là duy nhất trong phạm vi của chúng. Ví dụ, chương trình sau bị lỗi trong quá trình biên dịch.

#include <stdio.h>   enum state  {working, failed};  enum result {failed, passed};     int main()  {      return 0;  }  

Kết quả:

[Error] redeclaration of enumerator 'failed' [Note] previous definition of 'failed' was here 


Enum với Macro

Chúng ta cũng có thể sử dụng các macro để định nghĩa hằng số. Ví dụ, chúng ta có thể định nghĩa ‘Working’ và ‘Failed’ bằng cách sử dụng macro sau.

#include <stdio.h>  #define Working 0 #define Failed 1 #define Done 2    int main()  {     printf("%d, %d, %d", Working, Failed, Done);     return 0;  }  

Kết quả:

0, 1, 2 

Enum có nhiều lợi thế hơn Macro khi đặt tên các hằng cố có giá trị đầy đủ.

  • Enum tuân theo các quy tắc phạm vi.
  • Các biến Enum được gán giá trị tự động. Ví dụ sau tương đương với Enum.
    enum state  {Working, Failed, Done}; 








Source link


Lượt xem : 291

Integrations
Users

Share Profile

Anyone at KeenThemes can view
Anyone with link can edit

Give Award

Anyone at KeenThemes can view
Anyone with link can edit

Report User

Let us know why you’re reporing this person
Don't worry, your report is completely anonymous; the person you're
reporting will not be informed that you've submitted it