Frage von Mizu17, 32

C++ Frage, If und Else if?

Es geht darum das man entweder "ok", "Ja" oder "Nein" sagen kann. Ich hab das jetzt mal so angewendet.

include iostream

include string

using namespace std;

int main() { string mood;

cout << "How is your mood?" << endl; cin >> mood;

if ("ok") { cout << "Are you really ok?" << endl; }

else if ("bad") { cout << "I hope you will get better soon" << endl; }

else if ("good") { cout << "Well that's good then :) Keep it up" << endl; }

return 0; }

Damit zeigt mir das Programm aber immer nur die erste Antwort, auch wenn ich "Bad" schreibe, kommt "Are you really ok?". Ich hoffe mir kann das wer erklären wie ich das ändern kann und richtig mache. (Die Rauten sind vor dem include, nur kann das GuteFrage.net wohl nicht anzeigen genauso wie die klammern die bei iostream und string verwendet werden, außerdem sind hier die abstände nicht so wie es sein sollte, zu mindestens zeigt mir das die Vorschau so.)

Antwort
von PWolff, 10

das if-Statement erwartet einen booleschen Ausdruck (also etwas, das wahr oder falsch ergibt). Dabei wird alles, was gleich 0 ist, als falsch interpretiert, und alles andere als wahr.

(Dies ist übrigens einer der Hauptpunkte, weshalb ich C++ nicht für eine anfängergeeignete Sprache halte. Wenn man nicht GANZ genau weiß, was man tut, und warum das in diesem Fall besser ist, sollte man grundsätzlich nicht davon abweichen, auch wirklich eine boolesche Variable oder eine Funktion / einen Operator mit booleschem Ergebnis an if zu übergeben.)

Vermutlich wird ein Leerstring als false interpretiert, aber offensichtlich ein nicht-leerer String als true.

Zu erwarten wäre

if (mood == "ok) {
tuwas
} else if (mood == "bad") {
tusonstwas
} ...

oder

switch (mood) {
case "ok":
tuwas;
break;
case "bad":
tusonstwas;
break;
...
};
Antwort
von MarkusGenervt, 15

versuch doch mal im if-Statement einen Zeichenfolgenvergleich

Antwort
von LeonardM, 10

Mich wunderts das du das überhaupt so kompilieren konntest rofl

Lade mal den originalcode auf pastebin hoch und poste den link. Aber bitte mit richtiger syntaxwahl dort

Antwort
von Copyyy, 16

Woher soll der Computer wissen, was er vergleichen soll?
if (mood == "ok")

Antwort
von Mizu17, 15

außerdem kann er wohl nicht iostream und string hier lesen !? und die Klammern dazu auch nicht...

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten