2012-11-09 10 views
6

तुलना करने के लिए मैं एक सवाल enum के बारे में सीकैसे enum मूल्यों

मैं निम्नलिखित तरीके से एक enum परिभाषित किया गया है:

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

Hello hello; 

int value = 3; 

तो कैसे Hello में मूल्य के साथ मूल्य की तुलना के लिए?

उदाहरण के लिए

:

if(value == Hello3) 
{ 
} 

या मैं तो वह ऐसा करना चाहिए:

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

मैं ध्यान दें कि आप इतने पर यहाँ पर हाल ही में सी पर वास्तव में बुनियादी सवालों का एक बहुत पूछ रहा है - शायद यह एक को पकड़ पाने के लिए समय आ गया है सी पर सभ्य प्रारंभिक पुस्तक? आप प्रश्नों और उत्तरों के माध्यम से इसे सामान्य रूप से करने के बजाय उस तरीके से बहुत तेज़ी से सीखेंगे। –

+2

क्या मैं भाषा के रचनाकारों द्वारा http://en.wikipedia.org/wiki/The_C_Programming_Language का सुझाव दे सकता हूं? यह एक बड़ी किताब नहीं है (क्योंकि सी एक बड़ी भाषा नहीं है) और उदाहरण काम करने के लिए मजेदार हैं। –

+1

ठीक है, मुझे लगता है कि आप सही हैं, मुझे एक सी भाषा पुस्तक, किसी पुस्तक को अनुशंसित करने की आवश्यकता है? –

उत्तर

17

इस तरह सही है:

if (value == Hello3) 
{ 
} 

enum स्थिरांक प्रकार int के हैं।

आपका दूसरा निर्माण अमान्य है।

4

enum संरचना नहीं है और सदस्य नाम केवल constants के नाम हैं। enum में परिभाषित ये नाम enum के डेटा सदस्य नहीं हैं जैसे struct (जैसा कि आप सोच रहे हैं)।

तो याद रखें enum नामित पूर्णांक स्थिरांक की एक सूची को परिभाषित करने के लिए उपयोग किया जाता है जिसे हम #define का उपयोग करके भी कर सकते हैं।

तो यहाँ अपने मामले में:

if(value == Hello3) 
{ 
} 

इस रूप में यह मूल्य 3 संकलन समय पर (जो लेकिन int कुछ भी नहीं है) द्वारा Hello3 की जगह की तुलना करने के सही तरीका है।

उदाहरण के लिए आप इस तरह भी यह कर सकते हैं:

Hello hello=2; 
if(hello == Hello2) 
{ 
}