Kommaoperator?
-
Hi Leute!
Ich hab in meinem Lehrbuch folgende Codeschnipsel gefunden und verstehe nicht warum das Ergebnis so lautet. Hier seht ihr den Code:
int i = 7, j = 4; j = (i++, i - j); printf("j = %i, i = %i", j, i);
Laut meinem Lehrbuch hängt das Ergebnis und der Datentyp nur von der Expression2 in der Klammer ab. Das wäre ja dann 3 (weil: 7-4). Rauskommen tut aber 4... Das i++ bedeutet ja i=7; i=i+1 -> i=14. Rauskommen tut aber laut meinem printf i=8.
-
i = 7 mit i++ ist i = 8
j = 4 mit i - j bzw. 8 - 4 ist j = 4liege ich falsch?
-
bandchef schrieb:
Das i++ bedeutet ja i=7; i=i+1 -> i=14. Rauskommen tut aber laut meinem printf i=8.
Wieso 14? ++ erhöht i um 1. 7+1 ist 8. 8-4 ist 4. Passt schon so.
-
laut lehrbuch stimmt es schon... du bist dir wahrscheinlich von einem früheren
kapitel folgendes gewohnt:int b, i=2, a=3;
b=(i++) - a;
die werte danach sind folgender masen:
b=-1;
i=3;
a=3;b=-1 weil: i++ erst nach der berechnung von i-a durchgeführt wird. in deinem beispiel gibt aber das komma dem i++ den vorrang und so erfolgt:
j=8-4 weil: i++ -> i=8... und 8-4 = 4 -------> j=4!
und i = 8...