Forum: Compiler & IDEs (else) if


von hORST (Gast)


Lesenswert?

Hi

worin besteht eigentlich der Unterschied zu 2mal if und if, else if?

Also diese beiden Varianten:

if (i==1)
 {

 }
if (i==2)
 {

 }
else
 {

 }
----------------------
if (i==1)
 {

 }
else if (i==2)
 {

 }
else
 {

 }

von johnny.m (Gast)


Lesenswert?

Englisch müsste man können...;-)

Im ersten Fall wird abgefragt, ob i 1 ist. Ist das der Fall, wird das
in der Klammer darunter ausgeführt. Anschließend wird (egal was die
erste Abfrage ergeben hat) abgefragt, ob i 2 ist. Ist das der Fall,
dann wird das was in der dazugehörigen Klammer steht, ausgeführt. Wenn
i nicht 2 ist (und nur dann), wird das gemacht, was in der Klammer
hinter dem else steht.

In der zweiten Version wird, wenn i 1 ist, die zweite Abfrage (also ob
i 2 ist) gar nicht mehr durchgeführt (was auch in vielen Fällen
sinnvoll ist, da dann ja bereits vorher festgestellt wurde, dass i 1
ist und demzufolge nicht gleichzeitig 2 sein kann, außer, es wurde
innerhalb des if(i == 1)-Blockes verändert!).

Eine mit else (if) eingeleitete Abfrage wird nur dann ausgeführt,
wenn die vorhergehende(n) Abfrage(n) nicht zutrafen! Das spart i.d.R.
Rechenzeit, da keine unsinnigen Abfragen gemacht werden müssen, wenn
schon vorher klar ist, dass diese eh nicht zutreffen.

von Werner B. (Gast)


Lesenswert?

if (i==1)
 {
    i = 2;
 }
if (i==2)
 {
    printf("Wird ausgeführt");
 }
else
 {
    printf(" i ist JETZT nicht 2");
 }
----------------------------------------------
if (i==1)
 {
    i = 2;
 }
else if (i==2)
 {
    printf("Wird nicht ausgeführt");
 }
else
 {
    printf(" i ist weder 1 noch 2");
 }

von hORST (Gast)


Lesenswert?

danke.... ich war einfach zu faul, mal drüber nachzudenken.. :-(

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.