Ich mache C++ in Visual Studio 2010 und fand etwas seltsames Verhalten. Um eine lange Geschichte kurz zu machen, fand ich, dass dies nicht kompilieren:C++ - Dekodierung der Schleifenzählvariable inkonsistentes Verhalten?
for (int i = 0; i < 10; i++)
{
int i = 11;
}
Diese richtige scheint, da die Variable i bereits in der for-Schleife Header deklariert wird.
Jetzt aber, wenn ich eine andere for-Schleife vor der Re-Deklaration von i einfügen, dann plötzlich der Compiler, Intellisense usw. Thiks der Code ist richtig - keine echte Warnungen geben (Versuchte Warnungen Ebene 3 und vier (/ W3 und/w4)). Also, dies zu tun tatsächlich kompilieren und ausführen:
for (int i = 0; i < 10; i++)
{
for(int j = 0; j < 5; j++)
{
}
int i = 11;
}
Persönlich finde ich es seltsam, dass insering andere for-Schleife legitimiert das ansonsten gleiche Code-Szenario. Jeder Art Geist kann mir sagen, was ich hier übersehen habe?
Vielen Dank im Voraus!
EDIT: Wow, danke an alle für alle Antworten und Demos - Du bist super! :) Diese Probe, die einen Fehler enthüllte, kam mir in den Sinn, ich nahm nur an, dass MS so etwas schon bemerkt hätte und es behoben hätte ... zumindest in VS2013.
Es wurde versucht, die Optimierungseinstellungen wie vorgeschlagen zu ändern, aber es machte keinen Unterschied.
Danke allen!
Kredit für Demos: @ Mark Garcia
Ist es der Compiler oder Intellisense? –
[Erstes Stück Code] (http://rextester.com/ORRMS33867), [zweites Stück Code] (http://rextester.com/ESBFG91953). –
@LuchianGrigore Compiler als auch. VS2012 weist auch das erste Snippet zurück und akzeptiert das zweite. – Mysticial