mikrocontroller.net

Forum: Compiler & IDEs C: a()+b()*c() Aufrufreihenfolge


Autor: daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich behaupte mal, nach meinem C Verständnis,
dass es 3!=6 verschiedene Aufrufreihenfolgen geben kann.

Liege ich richtig mit meiner Vermutung?

Autor: MaWin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eben, sie ist undefiniert, d.h. der Compiler kann daraus machen was er 
will, 6 Möglichkeiten hat er denn er kann trotz Punkt vor Strich 
trotzdem etwas vorher aufrufen und erst hinterher verwenden.

Zwar wird das compilierte Programm dann immer gleich ablaufen, aber 
selbst das ist nach C-Standard nicht garantiert.

Will man eine bestimmte Reihenfolge, muß man die Berechnung aufdröseln 
und per Semikolon die Anweisungen voneinander trennen. Ein Semikolon 
erzwingt eine Aufrufreihenfolge. Dennoch können Compiler 
semikolongetrennte Statements umsortieren wenn sie glauben, daß es keine 
Nebeneffekte hat. Bei Funktionen lassen sie das also meistens.

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.