Logische Operatoren: und
Manchmal reicht eine Bedingung nicht aus. „Wenn Freitag ist und es wärmer als 20 °C ist, gehe ich aus“ besteht aus zwei Bedingungen, die das Wort „und“ verbindet. In C++ ist das der Operator && (zwei &-Zeichen hintereinander). Lies ihn als „und“:
std::string tag = "Freitag";
int temperatur = 25;
if (tag == "Freitag" && temperatur > 20) {
std::cout << "Ich gehe aus" << std::endl;
}Das gibt aus:
Ich gehe aus&& ist ein logischer Operator: Er verbindet zwei Bedingungen zu einer. Die verbundene Bedingung ist nur wahr, wenn beide Teile wahr sind. Ist auch nur einer falsch, ist die ganze Bedingung falsch:
true && trueisttruetrue && falseistfalsefalse && trueistfalsefalse && falseistfalse
Du kannst auch mehrere Bedingungen hintereinander verbinden: a && b && c ist nur wahr, wenn alle drei wahr sind.
Jeder Teil muss ein vollständiger Vergleich sein. „Alter von 13 bis 19“ ist alter >= 13 && alter <= 19. Kürzt du es so ab, wie wir sprechen, zu alter >= 13 && <= 19, meldet der Compiler error: expected expression, weil er nicht weiß, was <= 19 vergleichen soll. Auch die mathematische Schreibweise 13 <= alter <= 19 funktioniert nicht. Dafür meldet der Compiler error: chained comparison 'X <= Y <= Z' does not behave the same as a mathematical expression: Vergleiche so zu verketten bedeutet in C++ nicht, was es in der Mathematik bedeutet.
So schreibst du es:
Anweisungen
- 1
Schreibe eine
if-Anweisung, dieWillkommennur ausgibt, wennbenutzernamegleich"admin"ist und gleichzeitigpasswortgleich"katze42". Verbinde die beiden Vergleiche mit&&. - 2
Füge einen
else-Zweig hinzu, derFalscher Benutzername oder falsches Passwortausgibt. Probiere dann ein falsches Passwort aus: Änderepasswortin"katze". Ein falscher Teil genügt, damit die ganze Bedingung falsch ist, das Programm gibt alsoFalscher Benutzername oder falsches Passwortaus.