मानक राज्यों को स्विच करने के संबंध में निम्नलिखित हैं। "जब स्विच स्टेटमेंट निष्पादित किया जाता है, तो उसकी स्थिति का मूल्यांकन किया जाता है और प्रत्येक मामले निरंतर तुलना की जाती है।"सी ++ स्विच स्टेटमेंट अभिव्यक्ति मूल्यांकन गारंटी
क्या इसका मतलब यह है कि हालत अभिव्यक्ति केवल एक बार और एक बार मूल्यांकन की जाती है, और प्रत्येक कंपाइलर के लिए मानक द्वारा इसकी गारंटी दी जाती है?
उदाहरण के लिए, जब एक साइड इफेक्ट के साथ स्विच स्टेटमेंट हेड में फ़ंक्शन का उपयोग किया जाता है।
int f() { ... }
switch (f())
{
case ...;
case ...;
}
यह पूछने की तरह है कि 'int main() {putchar (' c '); } 'केवल एक बार 'पुचर' को कॉल करने की गारंटी है (और इस प्रकार केवल एक 'सी' मुद्रित करने की गारंटी है)। वास्तव में, मुझे मानक में किसी भी पाठ से अवगत नहीं है जो ऐसी गारंटी प्रदान करता है। – cpplearner
मैं असहमत हूं। स्विच एक विशेष बयान है, जिसे असेंबली में कई प्रभावी तरीकों से लागू किया जा सकता है। मेरे लिए यह स्पष्ट नहीं है। – mikk
मुझे लगता है कि cpplearner सही है, 'असेंबली में कई प्रभावी तरीके "को' as-if 'नियम के तहत अनुमति है।इसके अलावा गारंटी है कि आपके फ़ंक्शन कॉल (जिनके साइड इफेक्ट्स हैं) का मूल्यांकन एक बार किया जाता है, * प्रत्येक संदर्भ में * सी ++ में, वही है, यह किस तरह का संदर्भ है, इस बारे में अपरिहार्य है। – ybungalobill