Forum: Compiler & IDEs C-Code nicht klar


von Armin Kniesel (Gast)


Lesenswert?

Hi,

ich bin mit der Sprache C noch nicht ganz vertraut und habe mir das
Buch
"C für Mikrocontroller" gekauft. Dort ist ein Beispiel-Quelltext
drin,
welchen ich nicht ganz kapiere.

int GetMax( int y, int z)
{   if (y>z) return y;
    return z;
}

Logisch, daß y rückgegeben wird, wenn y größer z ist.
Aber wann wird die dritte Zeile (return z) ausgeführt?
Fehlt da nicht ein else?

Armin

von Wilfried Nesensohn (Gast)


Lesenswert?

Nein, denn wenn y<z, so wird 'return y;' nicht ausgefuehrt. Ueberleg
mal was ein if sonst ueberhaupt bringen wuerde.

Vielleicht fehlen dir da irgendwelche Klammern, das ganze kann man
natuerlich auch als

if (y>z){
  return y;
}
return z;

schreiben. Das macht hier aber nicht wirklich sinn, da bei positivem
vergleich immer die Anweisung nach dem if ausgefuehrt wird. Die
Klammern bilden nur einen block, effektiv ist das dann auch nur eine
Anweisung.
Das else dass dir abgeht waere z.b hier von noeten:

int GetMax( int y, int z)
{
  int max;
  if (y>z) max = y;
  else max = z;

  return max;
}

Uebrigens, es gibt excellente Buecher ueber C, auch online material ist
(in massen) zu haben, z.b http://www.cprogramming.com

mfg

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

@Armin: Da durch das erste return bereits die Funktion verlassen wird,
wird das zweite return sowieso nicht ausgeführt und man kann sich das
else sparen.

von Armin Kniesel (Gast)


Lesenswert?

Danke,
das war jetzt gut erklärt.

Armin

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.