निम्नलिखित छोरों के बीच सामान्य कारक:
while (condition) {action}
do {action} while (condition)
जबकि दूसरी छोरों कि एक या उससे अधिक समय हो के लिए है कि पूर्व छोरों कि ऐसा शून्य या अधिक बार के लिए इस्तेमाल किया जाता है ।
दूसरे शब्दों में, लूप की शुरुआत में while
की स्थिति की जांच की जाती है, और do while
के लिए, यह अंत में चेक किया गया है।
अक्सर आप कोड जहां डेवलपर्स प्रतीत नहीं देखेंगे पता है कि में के बारे में do-while
वे लिखेंगे:
result = doSomething();
while (result == NOT_FINISHED) {
result = doSomething();
}
जो बेहतर रूप में लिखा जा सकता है:
do {
result = doSomething();
} while (result == NOT_FINISHED);
हालांकि, आपके विशिष्ट मामले में जहां स्थिति हमेशा true
है, यह वास्तव में कोई फर्क नहीं पड़ता। निम्नलिखित लूप बने हैं मूल रूप से बराबर (सच मामले के लिए 1
उपयोग करते हुए):
for (;;) { doSomething(); }
for (;;doSomething());
while (1) { doSomething(); }
do { doSomething(); } while (1);
while (doSomething(),1);
BADPAX: doSomething(); goto BADPAX;
पहले for
पाश शायद अनंत लूप कर रही है, इस तथ्य का लाभ लेने के विहित तरीका है, आप निरंतरता शर्त को छोड़ देते हैं, तो लूप के लिए, यह हमेशा सत्य होने लगता है।
दूसरा for
लूप सिर्फ लूप बॉडी को for
कथन के प्रति-पुनरावृत्ति भाग में ले जा रहा है।
पहले while
को कभी-कभी जंगली में देखा जाता है, do-while
शायद कम है। यहां एकमात्र भेद यह है कि पूर्व लूप हमेशा लूप टॉप पर जांच कर रहे हैं, बाद वाले लूप हमेशा लूप तल पर जांच कर रहे हैं।
अंतिम while
पाश एक तरह से सी अल्पविराम ऑपरेटर उपयोग कर रहा है तो आप शायद कभी नहीं करना चाहिए :-)
पिछले एक आजकल बहुत दुर्लभ है लेकिन क्या वे सब मशीन कोड के स्तर पर करने के लिए नीचे का अनुकूलन शायद है।
मैंने कभी नहीं देखा (सत्य) '। यह एक अनंत लूप है, लेकिन '(;;) 'के लिए एक लिखने के लिए मूर्ख (और स्पष्ट) तरीका है। –