mikrocontroller.net

Forum: Compiler & IDEs C-Code nicht klar


Autor: Armin Kniesel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Wilfried Nesensohn (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Armin Kniesel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke,
das war jetzt gut erklärt.

Armin

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.