Abarbeitungsreihenfolge in if-Anweisung

OP #520231
Lesenswert?

Hallöchen,

ist die Reihenfolge in einer if-Anweisung "von links nach rechts" 
festgelegt?

D.H., kann ich davon ausgehen, daß beispielsweise

if( init_xy()==FEHLER || benutze_xy()==FEHLER )
   dumm_gelaufen();

immer erst init_xy() und erst danach benutze_xy() ausgeführt wird?

Danke, Frank
Gast #520232
Lesenswert?

Ja, die Auswertung des Operators || erfolgt von links nach rechts, das 
ist festgelegt. Wenn allerdings schon die erste Bedingung erfüllt ist, 
wird die zweite bei den meisten Compilern gar nicht mehr geprüft.
#520273
Lesenswert?

Christian wrote:
> Ja, die Auswertung des Operators || erfolgt von links nach rechts, das
> ist festgelegt. Wenn allerdings schon die erste Bedingung erfüllt ist,
> wird die zweite bei den meisten Compilern gar nicht mehr geprüft.

Um genau zu sein: Darf nicht mehr ausgewertet werden.
Diese sog. 'shortcut evaluation' wird vom C-Standard gefordert.
Es liegt also nicht im Ermessen des Compilerbauers ob er sie
macht oder nicht. Ist das ganze ein C Compiler, dann muss er
sie machen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren