Boolsche IF Anweisung
-
Hallo,
wenn ich folgende IF-Anweisung schreibe wird die erste Klammer auch genommen, wenn nur value wahr ist. Was mache ich falsch ?
if((key == "T" || "W" && value == "Y")) { cout << "In schleife" << endl; return 0.0; }else{ cout << "ausserhalb" << endl; return 0.0; }Vielen Dank für eure Antwort !
-
if((key == 'T' || key == 'W' && value == 'Y')) { cout << "In schleife" << endl; return 0.0; }else{ cout << "ausserhalb" << endl; return 0.0; }fuer zeichen must du ' verwenden. " wird fuer zeichenketten verwendet.
Meep Meep
-
Hallo,
Die Abfrage ist falsch formuliert. Ich weiß nicht genau was du willst, es könnte aber so aussehen.
if((key == "T" || key == "W") && value == "Y")Wenn key und value char sind, müssen noch die doppelten Anführungsstriche durch einfache ersetzt werden.
-
(key == "T" || "W" && value == "Y")
Erst mal gucken ob key "T" ist.
Ist das der Fall ist das Oder abgeschlossen und es wird noch geguckt, ob value auch "Y" ist.Ist key aber gar nicht "T" wird der zweite Teil des Oders ausgewertet, sprich "W". "W" ist ein char-Zeiger, der auf etwas anderes, als 0 zeigt (eben auf "W"). Also ist der Ausdruck wahr.
Das key == "T" kannst du dir also sparen, da der zweite Ausdruck des Oders "W" immer wahr ist.Dein Ausdruck testet nur ob value "Y" ist. (Ich hoffe value hat den Typ std::string und nicht char *, sonst ist der Ausdruck immer falsch.)
Was du vermutlich eigentlich wolltest ist:
((key == "T" || key == "W") && value == "Y")
-
Dann danke ich mal allen für diese super schnellen Antworten.
Das hat mein Problem gelöst

Grüßle qbitus