2012-11-09 42 views
6

Tôi có một câu hỏi về enum C.làm thế nào để so sánh giá trị enum

Tôi xác định một enum theo cách sau:

typedef enum 
{ 
    Hello1 = 1, 
    Hello2 = 2, 
    Hello3 = 3 
}Hello 

Hello hello; 

int value = 3; 

sau đó làm thế nào để so sánh giá trị với giá trị trong Hello?

ví dụ:

if(value == Hello3) 
{ 
} 

hay tôi nên làm điều đó như sau:

if(value == Hello.Hello3) 
{ 
} 
+5

Tôi nhận thấy rằng bạn đã được hỏi rất nhiều câu hỏi thực sự cơ bản về C thời gian gần đây trên đây trên SO - có lẽ đó là thời gian để có được giữ của một sách giới thiệu phong phú về C? Bạn sẽ học nhanh hơn rất nhiều so với thực hiện nó lặp đi lặp lại thông qua các câu hỏi và câu trả lời ở đây. –

+2

Tôi có thể đề xuất http://en.wikipedia.org/wiki/The_C_Programming_Language, bởi những người sáng tạo ngôn ngữ không? Nó không phải là một cuốn sách lớn (như C không phải là một ngôn ngữ lớn) và các ví dụ là thú vị để làm việc thông qua. –

+1

ok, tôi nghĩ rằng bạn là đúng, tôi cần phải đọc một cuốn sách ngôn ngữ c, bất kỳ cuốn sách bạn recommoned? –

Trả lời

17

Bằng cách này là chính xác:

if (value == Hello3) 
{ 
} 

enum hằng là loại int.

Cấu trúc thứ hai của bạn không hợp lệ.

4

enum không phải là cấu trúc và tên thành viên chỉ là tên của constants tương ứng. Những tên này được xác định trong enum không phải là thành viên dữ liệu của enum như trong struct (như bạn đang nghĩ).

Vì vậy, hãy nhớ enum được sử dụng để xác định danh sách các hằng số nguyên được đặt tên mà chúng tôi có thể thực hiện bằng cách sử dụng #define.

Vì vậy, đây trong trường hợp của bạn:

if(value == Hello3) 
{ 
} 

Đây là cách chính xác để so sánh vì nó thay thế Hello3 bởi giá trị 3 (đó là gì, nhưng int) tại thời gian biên dịch.

Ví dụ, bạn có thể làm điều đó cũng như thế này:

Hello hello=2; 
if(hello == Hello2) 
{ 
} 
Các vấn đề liên quan