Verständnis Problem
-
Hi
könnt ihr mir bitte veraten wieso der Ausdrück "false" zurück gibt?
int main(){ int x = 7; bool y = x++ == 8 || x == 7; cout << y << endl; _getch(); return 0; }Eigentlich heißt es doch "Der ODER-Operator || liefert genau dann true, wenn mindestens ein Operand
wahr ist" und "x == 7" ist doch wahr.
-
Warum sollte x 7 sein? Der Ausdruck "x++" hat zwar den Wert von x vor dem ++, aber in jedem Ausdruck danach hat x ja schon den Wert x + 1.
-
Nein, der ||-Operator (und der &&-Operator) haben einen Sequenzpunkt zwischen der linken und der rechten Seite. Daher sind alle Seiteneffekte der linken Seite (hier das x++) bereits eingetreten, also ist x==8. Diese beiden Operatoren haben noch eine andere interessante Eigenschaft, die sehr oft benutzt wird:
http://en.wikipedia.org/wiki/Short-circuit_evaluation
-
Jetzt sehe ich denn Fehler auch.
Vielen dank