Bonjour, Je suis en train de lire le cours de Mathio NEBRA sur le C ,je ne trouve pas le problème , chaque fois je veux tester ce code je trouve qu'il est vrai .
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{ int x=0, y=11 ;
x=4<y<5;
printf("%d",x);
return 0;
}
En C, il existe des opérateurs unaires, des opérateurs binaires et un unique opérateur ternaire. - les opérateurs unaires s'appliquent à une seule expression, certains sont avants, certains sont après. exemple -x pour avoir l'opposé - les deux expressions se mettent avant et après les opérateurs binaire. exemples : a+b pour le somme, a<b pour l'infériorité, a && b pour un et-logique. - le seul opérateur ternaire s'utilise comme cela : test ? sivrai : sifaux
S'il y a plusieurs opérateurs dans une expression, les plus prioritaires sont effectués avant. Si même priorité, les regroupements se font souvent par la gauche (mais certains regroupent à droite). Les opérateurs unaires sont toujours plus prioritaire que les binaires et ternaire
-a + -b; // est compris comme (-a) + (-b), les unaires avant les binaires
a + b + c; // est compris comme (a + b) + c, regroupés par la gauche
d == a + b * c; // est vu d == (a + (b*c)), mult avant add avant == comme en math
a < b && c < d // est vu (a<b) && (c<d), égalités/inégalités avant les opérations logiques
Donc la séquence x = 4 < y < 5;
x = 4 < y < 5; // 2 fois opérateur <, il faut grouper par 2 à gauche
// est vu comme ...
x = ((4 < y) < 5);
// 4 < y est vrai car y vaut 11. La valeur vraie c'est 1
x = (1 < 5);
// 1 est bien inférieur à 5, donc (1<5) vaut 1
x = 1;
Alors pour vérifier si on a bien 4 < yet aussi y < 5, il faut écrire ...
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
En recherche d'emploi.