Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#14

Re: Negativ beispiel zum ansehn ;)

  Alt 24. Dez 2006, 12:53
x += x++; sollte das gleiche sein wie

x += x;
x++;

gleich

x = x + x;
x = x +1;

10 = 5 + 5;
11 = 10 +1;

Ich habs im GCC probiert, kommt 11 und 12 raus. Es gibt aber unter den vielen Compilerswitches auch welche die diese Verhalten beeinflussen, und da wirds dann typisch C-doof

Zitat:
f() + x * g()
da sollte auch 7 rauskommen, auch wenn das Verhalten "undokumentiert" ist. Der Formalparser wird zuerst x * g() auflösen. Dabei gehen Funktionsaufrufe vor Variablen. D.h. also 1. g() dann 2. * x und 3. + f(), ergibt 7. Das sollte ebenfalls in jeder Borland PASCAL Version identische Resulate liefern, unabhängig von den Compilerswitches. Denoch ist es undokumentiert. Ein schlechter Stil ist es aber aus anderen Gründen. Wir programmieren indem wir saubere Schnittstellen/Black Boxes erzeugen. Da aber in diesem Beispiel Funktionsresulate und Modifikation globaler Variablen kombiniert werden, dh. funktion g() liefert im Grunde gleich 2 Resultate (Resulat und x+1) zurück. Das ist schlechter Programmierstil da die Modifikation von X nicht in der Schnittstelle zur Black Box g() sichtbar ist.
Das Beispiel sieht aber sehr konstruiert aus, ich habe bisher noch nie solchen Code im realen Einsatz gesehen.

Gruß Hagen
  Mit Zitat antworten Zitat