मैं विजुअल स्टूडियो 2010 में सी ++ कर रहा हूं और कुछ अजीब व्यवहार पाया। एक लंबे कहानी कम करने के लिए, मैंने पाया कि इस संकलन नहीं होगा:सी ++ लूप गिनती परिवर्तनीय असंगत व्यवहार का पुनर्विक्रय?
for (int i = 0; i < 10; i++)
{
int i = 11;
}
यह सही लगता है, चर के बाद से मैं पहले से ही पाश हेडर के लिए में घोषित किया जाता है।
अब, हालांकि अगर मैं फिर से घोषणा करने से पहले एक और फॉर-लूप सम्मिलित करता हूं, तो अचानक संकलक, इंटेलिजेंस इत्यादि कोड सही है - कोई असली चेतावनी नहीं दे रहा है (चेतावनी स्तर 3 और चार (/ W3 और/W4))। तो, यह कर वास्तव में संकलन और चलेंगे:
for (int i = 0; i < 10; i++)
{
for(int j = 0; j < 5; j++)
{
}
int i = 11;
}
व्यक्तिगत रूप से, मैं यह अजीब के लिए लूप एक और insering अन्यथा एक ही कोड परिदृश्य legitimates कि पाते हैं। किसी भी तरह की भावना मुझे यह बताने में सक्षम है कि मैं यहां क्या देख रहा हूं?
अग्रिम धन्यवाद!
संपादित करें: वाह, सभी उत्तरों और डेमो के लिए सभी को धन्यवाद - आप कमाल हैं! :) इस नमूने ने एक बग को उजागर किया मेरे दिमाग को पार कर गया, मैंने अभी माना है कि एमएस ने अब तक ऐसी चीज देखी होगी और इसे ठीक कर दिया है ... कम से कम वीएस2013 में।
सुझाए गए अनुकूलन सेटिंग्स को बदलने का प्रयास किया, लेकिन इससे कोई फर्क नहीं पड़ता।
सभी को धन्यवाद!
Second piece of code क़ौम के लिए
क्रेडिट: @Mark गार्सिया
क्या यह संकलक या इंटेलिजेंस है? –
[कोड का पहला भाग] (http://rextester.com/ORRMS33867), [कोड का दूसरा भाग] (http://rextester.com/ESBFG91953)। –
@LuchianGrigore कंपाइलर भी। वीएस2012 पहले स्निपेट को भी खारिज कर देता है और दूसरे को स्वीकार करता है। – Mysticial