Bonjour, j'ai cet exercice :
int main()
{
int a,b,c,x,y,z;
x = 3 ; y = 2; z = 5; a = 1 ; b = 2; c = (a != b);
a = !c ; b = (a && c); c = (a || b);
x = x-z+y ; y = y+z; z = x-x;
return 0;
}
on obtient a=0, b=0 et c=0 en solutions à l'exercice précité, comment celà?
Dites moi si ma démarche est fausse.
a = 1 ; b = 2; c = (a != b);
b étant différent de 0 il prend la valeur booléenne vrai donc 1. a != b veut donc dire que a prend la valeur booléenne 0, et par affectation c aussi.
a = !c ;
on affecte à a l'inverse booléen de c, soit 1. a = 1
b = (a && c);
Autrement dit, b = (1&&0) donc b = 0.
c = (a || b);
Ben moi je traduis ça par c = (1||0) qui est vrai donc c = 1 et pas 0!!!
Pouvez vous me dire où est mon erreur?
De plus il est demandé d'afficher les valeurs, or dans printf je n'ai pas de format pour afficher un booléen. J'ai essayé pour voir %d mais évidemment la console me met un warning:
format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘char *’ [-Wformat=]