web-dev-qa-db-fra.com

if instruction entier

je pense que c'est une question simple, mais je me bats avec ce qui suit. dans l'exemple j'ai la déclaration suivante (la langue est C):

int foobar

if (foobar)
{
// do something.
}

maintenant, si je me trompe, cette affirmation est vraie lorsque foobar n'est pas nul. il devrait donc être assez semblable à if (foobar! = 0);

Mais que se passe-t-il si foobar devient un nombre négatif?

27
Bart Teunissen

négatif ou positif. Tout ce qui n'est pas un 0 est une vraie valeur dans if

Considérez également un nombre négatif: -1

-1 en C en interne est représenté par: 0xFFFFFFFF, auquel cas, ce serait un nombre positif si je le convertis en entier non signé.

Mais après l'avènement des compilateurs standard C99, je vous suggère d'utiliser <stdbool.h> au lieu. Rend le travail de devinette beaucoup moins:

Lisez ici à propos de stdbool.h

47
Aniket Inge

même

if (foobar) 

signifie foobar non nul donc qu'il soit positif ou négatif n'a pas d'importance, il n'est toujours pas nul

3
Anders

Votre déclaration doit retourner true si foobar est un nombre négatif (il est toujours différent de zéro) mais vous devez éviter ce type de test car ce n'est pas la meilleure pratique pour tester des variables qui peuvent avoir différentes valeurs `` vraies '' de cette façon.

0
Lupuss