Else if überflüssig? [Solved]

07/04/2007 21:59 ForZaken#1
Hallo, das folgende ist ein Code-Schnipsel aus dem Tutorial das ich gerade abarbeite um C++ zu lernen.

Code:
    if(a==b)
    {
      cout<<"Beide Zahlen sind gleich";
    }
    else if(a<b)
    {
      cout<<a<<" ist kleiner als "<<b;
    }
    else
    {
      cout<<a<<" ist größer als "<<b;
    }
    cout<<"\n";
So nun zu meiner Frage:
Die erste if-Abfrage ist verständlich, aber zu der zweiten, hier wird else if benutzt - aber in diesem Falle ist das else vor dem if ja völlig unnütz weil der Code unter der ersten if-Abfrage ausgeführt wird egal ob das Ergebniss
von der ersten if Abfrage richtig oder falsch ist.

Nur das 2 else macht hier einen Sinn - weil er mit den ersten beiden if-Abfragen alle anderen Möglichkeiten
ausgeschlossen hat und nur noch der fall im else Bereich wahr sein kann.
Oder liege ich falsch?

Tut mir Leid falls ich mich unverständlich ausgedrückt habe, aber anders konnte ich es nicht formulieren.
07/05/2007 01:42 P0!NT3R#2
1. Dient es zur Verkettung der Abfragen.
2. Falls die erste if-Abfrage falsch ist, geht man über zu else if.
Wenn du das else weglässt, und die erste if-Abfrage richtig ist, wird bei der zweiten trotzdem geguckt, ob a < b ist, obwohl ja schon festeht, dass a = b ist, das wäre ziemlich unnütz und würde nur Zeit verschwenden. Außerdem würde der else Block auch in Aktion treten, da die else if Abfrage falsch ergiebt.
Das ist das Resultat, wenn du 1. nicht beachtest :)
Quote:
Beide Zahlen sind gleich0 ist größer als 0
Wäre dann bei int a = 0, b = 0; der Output ;)
07/05/2007 09:45 ForZaken#3
Achso jetzt ergibt das einen Sinn!
Also wenn die erste if-Abfrage true ist werden beide else übersprungen!
Das spart natürlich Zeit!
Das heßt wenn ich jetzt wie gesagt das else if zum if machen würde - würde er an dem Punkt
ein Schritt zuviel machen und

falls das 2 if dann falsch wäre würde er die letzte else - Abfrage auch noch
ausführen!


Ich glaube ich habe es verstanden!

Danke! :)

PS: +K for you :D!
Achja und könntest du den gesonderten Abschnitt Text nochmal bestätigen/verneinen/verbessern?
Weil eigentlich wenn die 2 if Abfrage false ist dann dürfte von der das Output ja gar nicht erscheinen
sondern nur vom letzten else, oder?
07/05/2007 10:00 NoName#4
das letzte wird immer ausgeführt wenn alle vorangegangenen if abfragen falsch waren.
07/05/2007 10:37 ForZaken#5
Ja das weiß ich ja auch aber

Quote:
Beide Zahlen sind gleich0 ist größer als 0
macht mir zu schaffen.
Wenn die beiden letzten falsch waren sollte ja eigentlich nur
Quote:
ist größer als 0
der Output sein.

EDIT:
Habs jetzt verstanden, ich habe die Reihenfolge der if-Abfragen vertauscht, Danke!