Euh, en fait, non, c'est exactement ce que sopsag déconseillait...
Version imprimable
pas vraiment, puisqu'il conseillait d'utiliser un "if" nu...
Et que il se trouve que dans le cas cité, c'était 0..
Mais si ça a avait été 3 ?
Même avec 0, tant que ce n'est pas un booléen , je testerais par rapport à 0..
Car on pourrait alors facilement inverser la condition, ce qui est plus difficile avec un if nu, à moins de faire des hypothèses sur le traitement d'un entier non-nul..
peut se transformer enCode:if ( cond == 0 )
beaucoup plus logique queCode:
1
2
3
4
5
6 if ( cond != 0 ) { switch ( cond ) { } }
car tout regard vers la norme dira que switch prend un entier...Code:
1
2
3
4
5
6 if ( ! cond ) { switch ( cond ) { } }
Mais qu'un test if fonctionne avec une réponse "entière considérée booléenne"...
Et on en revient au PO : comment alors peut-on considérer -1 ??
Alors que dans le test explicite, on le sait...
C'est vrai qu'il a parlé d'utiliser directement les int, au début. Mauvais et porteur de confusion.
D'un autre côté, le posteur originel n'a pas donné de contexte, ce qui peut être handicapant...
PS: s'il y a un switch dessus, dès qu'il y a d'autres cas que 0 et default, c'est
- soit qu'on tente d'utiliser une valeur booléenne pour ce qu'elle n'est pas ---> rupture de contrat
- soit que la valeur n'est pas booléenne ---> ifs nus interdits.
PPS: Décidément, les auteurs des langages de haut niveau comme Java et C# ont eu raison de restreindre if() aux booléens fortement typés inclus au langage...