Je fais du C++ dans Visual Studio 2010 et a trouvé quelques comportements bizarres. Pour rendre une longue histoire courte, j'ai trouvé que cela ne compile pas:
for (int i = 0; i < 10; i++)
{
int i = 11;
}
Cela semble correct, puisque la variable i est déjà déclarée dans la boucle for en-tête.
Maintenant, cependant, si j'insère une autre pour la boucle avant de la re-déclaration de i, puis, soudain, le compilateur, intellisense etc thiks le code est correct - sans donner de réelles mises en garde (Essayé les avertissements de niveau 3 et quatre (/W3 et /w4)). Donc, en faisant ce sera fait, de compiler et d'exécuter:
for (int i = 0; i < 10; i++)
{
for(int j = 0; j < 5; j++)
{
}
int i = 11;
}
Personnellement, je trouve bizarre que insering un autre pour la boucle de légitimer le contraire même code scénario. Toute sorte d'esprit capable de me dire ce que je suis surplombant ici?
Merci à l'avance!
EDIT: Wow, merci à tous pour toutes les réponses et démos - Vous êtes génial! :) Cet échantillon d'exposer un bug n'a traverser mon esprit, j'ai supposé que MS aurait remarqué une telle chose maintenant, et il fixe...au moins dans VS2013.
Essayé de changer les paramètres d'optimisation, comme l'a suggéré, mais il ne faisait aucune différence.
Merci tout le monde!
De crédit pour faire des démos: @Mark Garcia