warum wird hier else ausgeführt?
-
#include <iostream> using namespace std; int main() { int a=5, b=3, c=2; if (a>b>c) cout << "IN"; else cout << "OUT"; return 0; }
-
Zeile 6:
if (a>b>c)Tut hier nicht was du willst.
Zuerst wirda > bausgewertet, das ergibt natürlichtrue.
Und dann wirdtrue > causgewertet.truewird zu int konvertiert (damit man einen Vergleich machen kann), also ergibt das ganze:(1 > 2) == false.Daher wird immer OUT geschrieben.
Was du eigentlich willst, istif (a > b && b > c) cout << "IN"; else cout << "OUT";
-
Der Ausdruck wird von links nach rechts ausgewertet:
Also erst a > b
das ergibt true (1)
und dann true(1) > c
und das ergibt false.
Du willst wahrscheinlichif((a > b) && (b > c))
...
-
danke
jetzt verstehe ich es
-

Ich muss noch den Standard zu der bool->int Konvertierung zitieren:N3337
Für integrale Basisdatentypen, s. §4.7 / 4.
Für Fließkommazahl-Typen, s. §4.9 / 2.
In beiden lautet die Definition:If the source type is bool, the value false is converted to zero and
the value true is converted to one.Sprich:
truewird immer zu 1,falsewird zu 0.