2011-02-04 15 views
10

सी/सी ++ में, निम्नलिखित का क्या अर्थ है?"के लिए (;;)" क्या मतलब है?

for(;;){ 
    ... 
} 

दुर्भाग्यवश मैं Google को नहीं कर सकता और सार्थक परिणाम प्राप्त नहीं कर सकता।

+6

हमेशा के लिए अकेला पाश। – Swiss

+0

यह भी देखें http://stackoverflow.com/questions/4031636/what-is-the-for-syntax-in-this-code/4031654#4031654 और http://stackoverflow.com/questions/2737550/what-does -for-mean-in-perl/2737623 # 2737623 - मैंने उन्हें डुप्लिकेट के रूप में नहीं माना क्योंकि वे PHP/Perl हैं लेकिन अगर मुझे पहले नहीं पूछा गया तो मुझे आश्चर्य होगा।हालांकि, चूंकि मुझे सी नहीं मिल रहा है, इसलिए आप अभी सुरक्षित हैं :-) – paxdiablo

+0

मुझे नहीं लगता था कि मैं पूछने वाला पहला व्यक्ति होगा, लेकिन मैंने पूछने से पहले खोज करने की कोशिश की। खोजने के लिए कोई खोजशब्द नहीं है, और मैं स्वीकार करूंगा, मैं थोड़ी आलसी थी। – sas4740

उत्तर

19

यह एक अनंत लूप है, while(true) के बराबर है। जब कोई समाप्ति स्थिति प्रदान नहीं की जाती है, तो स्थिति true पर डिफ़ॉल्ट होती है।

+6

का सुझाव देता हूं कि क्यों कोई व्यक्ति (सत्य) 'के बजाय '(;;)' लिखता है क्योंकि कुछ कंपाइलर जारी करेंगे 'जबकि (सत्य) 'में निरंतर बुलियन अभिव्यक्ति के लिए चेतावनी। उदाहरण के लिए, विजुअल सी ++ मुझे "चेतावनी सी 4127: सशर्त अभिव्यक्ति स्थिर है" 'जबकि (सत्य)' के साथ देता है। –

+3

लेकिन यह कार्यक्षमता के मामले में बिल्कुल वही है। –

+1

@ सिलिको में: यदि आप पूरी गोल्फ़िंग चीज में हैं तो यह चार वर्ण छोटे भी हैं। –

5

कुछ break, exit, throw आदि लूप निष्पादन के अंदर कथन तक लूप। मूल रूप से, आप से मिलकर के रूप में एक for पाश के बारे में सोच सकते हैं:

for (setup; test; advance) 
    ... 

हैं "परीक्षण" यह true माना जाता है खाली है, और पाश चल रहा रखता है। खाली "सेटअप" और "अग्रिम" बस कुछ भी नहीं करते हैं।

5

C और C++ (और काफी कुछ अन्य के साथ-साथ भाषा) में, for पाश तीन अनुभाग हैं:

  • एक पूर्व पाश अनुभाग, जो पाश शुरू होने से पहले निष्पादित करता है;
  • एक पुनरावृत्ति स्थिति अनुभाग जो सच है, लूप के शरीर को निष्पादित करेगा; और
  • एक पोस्ट-पुनरावृत्ति अनुभाग जिसे लूप बॉडी के प्रत्येक पुनरावृत्ति के बाद निष्पादित किया जाता है।

उदाहरण के लिए:

for (i = 1, accum = 0; i <= 10; i++) 
    accum += i; 

1 से 10 समावेशी करने के लिए संख्या जोड़ देगा।

यह निम्न के बराबर है:

i = 1; 
accum = 0; 
while (i <= 10) { 
    accum += i; 
    i++; 
} 

हालांकि, कुछ भी नहीं की आवश्यकता है कि एक for बयान में वर्गों वास्तव में कुछ भी होते हैं और, अगर यात्रा हालत याद आ रही है, यह सच मान लिया है।

तो for(;;) पाश मूल रूप से बस का अर्थ है:

  • किसी भी लूप सेटअप नहीं करते;
  • लूप हमेशा के लिए (ब्रेक, रिटर्न और आगे के बावजूद); और
  • कोई भी पोस्ट-पुनरावृत्ति प्रसंस्करण नहीं करते हैं।

दूसरे शब्दों में, यह एक अनंत लूप है।

3

अनंत लूप जो तब तक जारी रहता है जब तक कोई ब्रेक(), निकास() या गोटो स्टेटमेंट न हो।

संबंधित मुद्दे