अस्वीकरण: मुझे पता है कि यह अस्पष्ट है, और मैं ऐसा प्रोग्राम नहीं करूंगा। मुझे इसके बजाय पसंदीदा do-while
कथन से अवगत है, प्रश्न एक विशिष्ट भाषा निर्माण की वैधता के बारे में अधिक है।गोटो स्टेटमेंट के साथ लूप के लिए कम से कम एक पुनरावृत्ति को मजबूर करने की वैधता
goto
हमेशा सशर्त अभिव्यक्ति for
लूप के छोड़ माना जाता है? मैंने जो देखा उससे पहले यह पहले (यानी प्रारंभिक) और दूसरी अभिव्यक्तियों को छोड़ देता है। क्या यह हमेशा ऐसा होता है या यह व्यवहार पूरी तरह से संकलक निर्भर है?
#include <stdio.h>
int main(void)
{
int m = 5;
goto BODY;
for (m = 0; m < 5; m++)
BODY: puts("Message"); // prints "Message" once
printf("m = %d\n", m); // prints m = 6
return 0;
}
* "यह पहले दोनों (यानी आरंभ करना) और दूसरी अभिव्यक्ति" * छोड़ देता है। हाँ। * "प्रश्न भाषा निर्माण की वैधता के बारे में अधिक है" * भाषा निर्माण सभी समझदार प्रोग्रामर के लिए अमान्य है, क्योंकि एक ही काम करने के लिए बहुत बेहतर तरीके हैं (और भाषा वकीलों द्वारा अनुमोदन की आवश्यकता नहीं है)। – user3386109
@ user3386109: समझदार या नहीं, ऐसे लोग भी हैं जो सी/सी ++ कंपाइलर्स लिखते हैं और कोई फर्क नहीं पड़ता कि यह कैसा दिखता है, 'गोटो' अभी भी भाषा का हिस्सा है। –
मुझे यह तथ्य नहीं पता है, लेकिन मुझे संदेह है कि एक लूप के शरीर में 'गोटो' (यदि संकलक इसे बिल्कुल अनुमति देता है) परिणामस्वरूप "अपरिभाषित व्यवहार" होता है। –