में फ़ंक्शन लौटने वाले बूल के साथ मैंने एक प्रोग्राम लिखा है जो सामान के एक सेट में त्रुटियों को सूचीबद्ध करता है, और अंत में एक बूलियन मान देता है (वास्तविक अर्थ लौटाता है कि कोई त्रुटि नहीं मिली है)। मैं विश्वास result
का मूल्य अंत में सही होगाबिटवाई और सी ++
bool checkStuff1() {/*...*/}
bool checkStuff2() {/*...*/}
// ...
bool checkStuffN() {/*...*/}
bool checkAllStuff()
{
bool result = true;
result &= checkStuff1();
result &= checkStuff2();
// ...
result &= checkStuffN();
return result;
}
:
यहाँ मेरी कोड का सार है। हालांकि, मैं यह सुनिश्चित करना चाहता हूं कि सभी कार्यों checkStuffX()
को कॉल किया जाता है (क्योंकि वे असफल होने पर त्रुटि संदेश प्रिंट करते हैं, और मैं सभी त्रुटि संदेशों को मुद्रित करना चाहता हूं)।
मुझे पता है कि अगर मैं इस तरह से लिखा है, यह पहले एक विफल होने के बाद सभी checkStuffX()
छोड़ जाएगा:
result = result && checkStuffX(); // Will not call checkStuffX() if result is already false
मुझे यह भी पता है कि अगर मैं इस तरह से लिखा है, यह सब checkStuffX()
कार्यों कॉल करेगा:
result = checkStuffX() && result; // Will always call checkStuffX() even if result is false
लेकिन मैं सोच रहा था कि कोड के व्यवहार का उपयोग मैं थोड़ा सा तुलनात्मक रूप से कर रहा हूं, मानक द्वारा निर्धारित और गारंटीकृत है?
या क्या संकलक और उसके अनुकूलन के आधार पर अपरिभाषित व्यवहार का जोखिम है?
आप 'बूल असफल = झूठी का भी उपयोग कर सकते हैं; में विफल रहा है | = checkStuff1(); असफल | =! checkStuff2(); ... असफल | =! checkStuffN(); वापसी! असफल; '। यह सरल नियम (ए और बी बी) =! (! ए ||! बी) –