में मौजूद है, सालों से, मुझे लूप निकास के बाद for
लूप इटरेटर के मान का उपयोग न करने की आदत में शामिल हो गया है। मैं शपथ ले सकता था कि मैंने ऐसा किया, क्योंकि यह एक कंपाइलर चेतावनी उत्पन्न करता था, लेकिन हाल ही में कोड समीक्षा में मुझे चुनौती देने के बाद, मैं गलत साबित हुआ।लूप के बाद 'फॉर' लूप इटरेटर का उपयोग सी
उदाहरण के लिए, मैं हमेशा इस (: हमारे कोड के मानकों "तोड़" कीवर्ड के उपयोग को प्रतिबंधित नोट): किया
int i, result;
bool done = false;
for (i=0; i<10 && !done; i++) {
if (some_condition) {
result = i;
done = true;
}
}
// Value of i may be undefined here
अब, जाहिर है result
चर हटाया जा सकता है, अगर मैं पर भरोसा कर सकते मैं का मूल्य मैंने सोचा कि संकलक अनुकूलन के कारण, आप लूप इटरेटर के मूल्य पर भरोसा नहीं कर सके। क्या मैं बस एक प्रेत शिक्षण याद कर रहा हूँ? या यह मानक है (विशेष रूप से जीएनयू सी के संबंध में)?
* "(नोट: हमारे कोड मानकों" ब्रेक "कीवर्ड के उपयोग को प्रतिबंधित करते हैं): * * - क्षमा करें, लेकिन डब्ल्यूटीएफ? –
'ब्रेक' के साथ कुछ भी गलत नहीं है –
यदि मुझे सही मिनट याद है तो आप इटरेटर सीमा में दूसरा चर प्रस्तुत करते हैं तो सी 99 के अधिकांश ऑप्टिमाइज़ेशन आपको विंडो से बाहर जाने दे सकते हैं। इसके बाद मैं एक ++ के साथ थोड़ी देर लूप से बेहतर नहीं हूं; अतं मै। –