>Je vois pas pkoi ça ne serait pas une correction valable
Parce que si je change le code plus tard, et que x devient rellement non itialise, je ne le verrai plus !
Je prefere laisser le warning, plutot que de faire ce genre de correction.
> for (int i = 0; i < n; ++i)
>alors que n est non signé. L'erreur vient de la déclaration du i, pas du test.
Pas forcement. Tu peux reellement avoir besoin d'avoir i signe (Du genre tu fais des calcules avec i-3).
Et n peut aussi etre parfaitement non-signe (Et logiquement).
La resolution d'un tel cas, est de verifier si n est castable en signed. Sinon soit tu balances une erreur, soit tu fais une deuxieme boucle
imbriquee. Mais meme si ce probleme arrive souvent, la solution complete a celui-ci n'est que tres rarement employee.
> "je sais exactement les implications que ce que je fais va avoir, et je veux que ça se passe comme ça".
Si seulement le programmeur savait ce qu'il faisait, on n'aurait pas invente les warnings.
Ca me rappelle que ce genre de cast est a l'origine d'une vulnerabilite de IE5.5 (Celle qui faisait planter IE avec un BMP).
>1) oui, parce que le compilateur est parfaitement capable d'éliminer les éléments ne servant qu'à la syntaxe et inutile dans la génération du code.

C'est beau l'innocence de la jeunesse
> 2) sans vérifier, je dirais que oui. Mais si tu as un contre-exemple je suis preneur.
Je te previens. Ca utilise des goto / while / for a outrance. Un bel exemple de code incomprehensible.
PS: Je compile avec G++ car il detecte plus de warnings que GCC. Cherchez l'erreur.