निम्नलिखित switch
कथन पर विचार करें :
switch( value )
{
case 1:
return 1;
default:
value++;
// fall-through
case 2:
return value * 2;
}
यह कोड संकलित करता है, लेकिन क्या यह C90 / C99 के लिए मान्य (= परिभाषित व्यवहार) है? मैंने कभी ऐसा कोड नहीं देखा है जहां डिफ़ॉल्ट मामला अंतिम मामला नहीं है।
EDIT:
जैसा कि जॉन केज और किलियांदस लिखते हैं: यह वास्तव में बदसूरत और भ्रमित कोड है और मैं इससे अच्छी तरह वाकिफ हूं। मुझे केवल सामान्य वाक्य रचना में दिलचस्पी है (क्या यह परिभाषित है?) और अपेक्षित आउटपुट।
goto
बुराई नहीं है। कार्गो पंथ अनुयायी हैं! आप कल्पना नहीं कर सकते हैं कि लोग किस चरम सीमा से बच सकते हैं goto
क्योंकि यह सब इतनी बुरी तरह से बुराई है, जिससे उनके कोड का वास्तविक अपठनीय गड़बड़ हो जाता है।
goto
मुख्य रूप से finally
कार्यों में एक खंड की तरह कुछ का अनुकरण करने के लिए उपयोग करता हूं , जहां रोकते समय (स्रोत, फ़ाइलें, मेमोरी) को जारी करना पड़ता है, और हर त्रुटि मामले की सूची के लिए दोहराता है free
और close
पठनीयता के लिए मदद नहीं करता है। हालांकि इसका एक उपयोग है goto
कि मैं बचना चाहूंगा, लेकिन ऐसा नहीं हो सकता, जब मैं एक लूप से बाहर निकलना चाहता हूं और मैं switch
उस लूप में हूं ।