Kann mir jemand das Ergebniss dieses ausdrucks erklären?
-
#include <stdio.h>
main()
{
int y=6,x=3;y=((x)++)-1;
printf("\n y=%i x=%i",y,x);
}
Dabei kommt für y=2 und für x=4 raus.
Ich bin der Meinung es sollte doch so sein
y=((3)++)-1
--> y=(4)-1
--> y=3
also müsste zum Schluss y=3 und x=3 rauskommen.
Bin Anfänger, deswegen erbitte ich Gnade wegen unverständniss!!
-
Du hast das ++ als postinkrement verwendet. Das heisst, das der alte Wert der Variablen zurückgeliefert wird und dann die Variable inkrementiert wird. Daher kommt auch dein Fehler.
EDIT: Das ganze sieht dann so aus:
y=((x)++)-1;-> y=3-1 und x=4
-> y=2 und x=4Felix
-
danke für den hinweis
dachte die klammern seien in der Prioriät höher als das Postinkrement.
-
Das mit den Klammern nützt nichts, weil das Postinkrement trotzdem den alten Wert zurückgibt und dann inkrementiert. Durch die Klammern wird dieser Teil des Ausdrucks nur zuerst ausgewertet, aber sonst macht das keinen Unterschied.
Felix :xmas1:
-
ja hast ja recht
muss mich nur noch dran gewöhnen!!