}
1.int x = 1; { int x = x + 1; printf("%d\n", x);
Piège : on ne peut pas déclarer une nouvelle variable locale ayant le même nom qu'une variable globale, en utilisant une déclaration qui fait appel à cette variable globale. Pas de warning pour dire que la définition locale de x est invalide ou (au pire) que x est utilisé sans être initialisé.
}
2.int i; for (i = 0; i < 2; i++) { int x; if (i == 0) x = 1; if (i == 1) printf("%d\n", x);Piège : la durée de vie de x est limitée au parcours en cours de la boucle, donc rien ne garantit que x = 1 quand i = 1. Pas de warning non plus pour la non-initialisation de x dans ce cas.
Bon, je sais que la version de GCC utilisée dans DevC++ commence à dater.
Qu'est-ce-que ça donne avec votre compilo préféré (GCC plus récent, VC++, autre...) ?
Qu'en pensez-vous ? J'en demande trop au compilateur ?