C++ - If-Abfrage?

2 Antworten

Das Ergebniss der verwendung des ||-Operators auf zwei Integers ist ein bool. Du kannst aber ein bool nicht ohne weiteres mit dem Wert aus einem Integer-Vektor vergleichen, zumal das Ergebnis auch nicht das wäre, das du haben möchtest.

Eine 0 als Eingabe tauscht nicht in der Ausgabe auf, da die While-Schleife, die den Wert hinzufügen soll, bereits vor der ersten Iteration abbricht (da 0 als false gewertet wird).

So ist eben die Semantik von C++.

0 || 1 wird von C++ zu true ausgewertet. Anschließend wird überprüft, ob der Ausdruck

Buch.at(counter)

den Wert true hat.

Du möchtest aber überprüfen, ob der Ausdruck den Wert 0 oder 1 hat, also musst du beides in einem Oder-Ausdruck verketten:

Buch.at(counter) == 0 || Buch.at(counter) == 1

Damit wird überprüft, ob Buch.at(counter) den Wert 0 oder ob Buch.at(counter) den Wert 1 hat. Das ist das, was du überprüfen willst.

Woher ich das weiß:Berufserfahrung – Software-Entwicklung