Valeur retournée par les comparaisons

Le
Marc Chantreux
Bonjour à tous,

int x;
x = 1 == 2;
printf("%d",x);

dans ce cas là, pas d'ambiguïté: x vaut 0. Mais quid du code suivant?

int x;
x = 1 != 2;
printf("%d",x);

Pour moi, impossible de connaître la valeur de x, je peux juste dire
qu'elle est non-nulle. gcc me renvoyant toujours 1, j'ai voulu savoir si
cette valeur était normalisée.

Je n'ai pas trouvé la réponse dans mon K&R. Dans ISO/IEC point 6.5.8.6,
on peut lire

"Each of the operators < (less than), > (greater than), <= (less than or
equal to), and >= (greater than or equal to) shall yield 1 if the
specified relation is true and 0 if it is false.90)
The result has type int"

J'aurais tendance a dire qu'il va de même pour == et != mais je n'ai
rien trouvé me le certifiant.

Si un exégète peut m'aider dans ma quête de vérité, cela m'aiderait
grandement dans ma compréhension de La Grande Question sur la Vie,
l'Univers et le Reste.

Cordialement,
Marc
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Pierre Maurette
Le #986415
Bonjour à tous,

int x;
x = 1 == 2;
printf("%dn",x);

dans ce cas là, pas d'ambiguïté: x vaut 0. Mais quid du code suivant?

int x;
x = 1 != 2;
printf("%dn",x);

Pour moi, impossible de connaître la valeur de x, je peux juste dire qu'elle
est non-nulle. gcc me renvoyant toujours 1, j'ai voulu savoir si cette valeur
était normalisée.

Je n'ai pas trouvé la réponse dans mon K&R. Dans ISO/IEC point 6.5.8.6, on
peut lire

"Each of the operators < (less than), > (greater than), <= (less than or
equal to), and >= (greater than or equal to) shall yield 1 if the specified
relation is true and 0 if it is false.90)
The result has type int"

J'aurais tendance a dire qu'il va de même pour == et != mais je n'ai rien
trouvé me le certifiant.

Si un exégète peut m'aider dans ma quête de vérité, cela m'aiderait
grandement dans ma compréhension de La Grande Question sur la Vie, l'Univers
et le Reste.


Dans ma copie de la norme (c99 draft) en §6.5.9.3

3
The == (equal to) and != (not equal to) operators are analogous to the
relational operators except for their lower precedence. Each of the
operators yields 1 if the specified relation is true and 0 if it is
false. The result has type int. For any pair of operands, exactly one
of the relations is true.

--
Pierre Maurette

Marc Chantreux
Le #994078
Pierre Maurette wrote:

Dans ma copie de la norme (c99 draft) en §6.5.9.3


je te remercie bien bas.

cordialement,
marc

Publicité
Poster une réponse
Anonyme