C++ und die NOT Bedingung
-
Hallo,
ich habe folgendes Problem:x=74; a=20; e=4; a+=(x%=7)*(++e)*(!(e<(-2)));
So für x kommt dann 4 raus für e=5 aber warum kommt bei a = 40 raus?
Was ergibt ! Bedingung?Ich danke schonmal für die Antwort
-
a+=(x%=7)*(++e)*(!(e<(-2))); a+= 4 * 5 *(!(5< -2)); a = 20 + 4*5 *(!false); a = 20 + 20 * true; a = 20 + 20 * 1; a = 40;
ungefähr so?
-
Danke BigNeal!
-
Ist das Ergebnis nicht undefiniert?
-
MFK schrieb:
Ist das Ergebnis nicht undefiniert?
worauf spielst du an?
also ich persönlich würde so keinen boolschen Wer in die berechnung einfügen.
soviel ich weiss, ist meistens die definition von true _nicht gleich Null_.
somit kann true durchaus auch gleich -1 sein.
-
In diesem Ausdruck wird e modifiziert und an anderer Stelle ausgewertet. Die Reihenfolge, in der die Operanden ausgewertet werden, und wann der Seiteneffekt eintritt, sind aber nicht festgelegt.
-
Da hast du schon recht. Ein Effekt tritt hier aber erst auf wenn e<-1 ist.
-
Dieser Thread wurde von Moderator/in Jansen aus dem Forum VCL/CLX (Borland C++ Builder) in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
BigNeal schrieb:
soviel ich weiss, ist meistens die definition von true _nicht gleich Null_.
somit kann true durchaus auch gleich -1 sein.Nein, da verwechselst du was. Bei der Umwandlung nach bool, wird alles ungleich 0 zu true. Für die andere Richtung ist aber festgelegt, dass true zu 1 evaluiert.