एक और तरीका नहीं है, कि @bitmask का जवाब लागू होता है:
मान लीजिए मानदंड है कि आप जांच कर सकता है की एक निश्चित संख्या नहीं है।
enum fruit_and_vegetables {
apples = 0,
pears,
tomatoes,
cucumbers
}
enum qualifs {
is_fruit = 1,
is_sweet = 1<<1,
is_round = 1<<2,
is_tasty = 1<<3
}
const qualifs qualifs_LUT[] = { // can be generated
is_fruit | is_sweet | is_round, // apple
...
};
ताकि एक विशिष्ट क्वालीफायर इच्छा के लिए जाँच हो गया
if (qualifs_LUT[tomato] & is_tasty)
: तो, बजाय
fruit_and_vegetables
enum के मूल्यों के लिए bitmask का उपयोग कर के, आप अतिरिक्त LUT उपयोग कर सकते हैं (यह है कि आप शब्द के आकार को सीमित कर देंगी)
संपादित करें: और एक और दिलचस्प तरीका। @bitmask: विधि (दोबारा) पर विचार करें। यह 2 की शक्तियों पर निर्भर करता है लेकिन प्राइम्स के बारे में कैसे? वे और अधिक धीरे धीरे बढ़ता है, तो enum मूल्यों के लिए रूढ़ अंक बताए द्वारा, आप और अधिक मूल्यों squize सकता है, कि उत्पाद मानते हुए नहीं होगा अतिप्रवाह:
enum fruit_and_vegetables {
apples = 2,
pears = 3,
tomatoes = 5,
cucumbers = 7
}
if ((apples * pears * tomatoes) % tomatoes == 0)
printf("it's tasty!");
यह एक नियंत्रण सेट में आइटम्स की संख्या को सीमित कर रहा है।
टमाटर और खीरे * हैं * फल ;-p –
SCOTUS के अनुसार नहीं: http://en.wikipedia.org/wiki/Tomato#Fruit_or_vegetable.3F –
@Noah: 'टमाटर * हैं' और टमाटर नहीं है * ' – ruslik