जैसा कि प्रश्न में दिया गया है, दोनों लूप समकक्ष हैं। वास्तविक कोड में, हालांकि, यह सामान्य है कि चीजें थोड़ा अधिक जटिल हैं, और उस स्थिति में, "i < n" स्थिति थोड़ी अधिक सुरक्षित होती है। यदि, उदाहरण के लिए, मैं एक से अधिक से बढ़ सकता हूं, तो यह पिछले एन हो सकता है और फिर "i! = N" संस्करण का परिणाम शाश्वत पाश हो जाएगा।
यह रक्षात्मक प्रोग्रामिंग का मामला है।यह सार्वभौमिक रूप से स्वीकार नहीं किया जाता है: कुछ लोग यह सुनिश्चित करना पसंद करते हैं कि चीजें यथासंभव शानदार रूप से विफल हो जाएं ताकि बग जल्दी मिल जाए। रक्षात्मक शैली उस तरह की छोटी समस्याओं को छिपा सकती है।
int n = 5;
int i = 0;
while (i != n) {
int old_i = i;
// the real stuff of the loop here
++i;
assert(i == old_i + 1);
}
(या, और भी बेहतर, एक भाषा के देशी रूप पूर्व और बाद की स्थिति और पाश अपरिवर्तनशीलताओं निर्दिष्ट करने के लिए synxtax का समर्थन करता है कि का उपयोग करें: हालांकि, अगर आप सभी बग को पकड़ने के लिए चाहते हैं, आप के साथ-साथ सभी तरह से जा सकते हैं ।)
एंड्रयू कोएनिग द्वारा "सी जाल और Pitfalls" पुस्तक (शुरुआत के लिए http://en.wikipedia.org/wiki/C_Traps_and_Pitfalls देखें) यदि आप इस तरह के प्रश्न पर विचार करना चाहते हैं तो शायद आपके लिए दिलचस्प है।
स्रोत
2009-01-25 10:25:40
कठोर डाउनवॉटिंग! एक पूरी तरह से वैध सवाल लगता है! –
यह "त्वरित सी ++: उदाहरण के द्वारा व्यावहारिक प्रोग्रामिंग/एंड्रयू कोएनिग, बारबरा ई। मू" का उदाहरण था। सिर्फ यह जानना चाहता था कि लेखक पहले व्यक्ति को – yesraaj
@raj पसंद क्यों करता है - शायद आपके प्रश्न में उल्लेख करें जहां आपको समस्या मिली और कहें कि आप एक स्पष्टीकरण की तलाश कर रहे हैं कि एक दूसरे से बेहतर क्यों है। यह मतदान को जल्दी से कम करने से रोक सकता है। – Dana