1 |
Gesundes neues Jahr allen! |
2 |
|
3 |
Da meine letzten C- und C++-Kurse schon 'ne Weile her sind, möchte ich gerne |
4 |
mal 'nen Religionskrieg auslösen bzw. weiterreichen. |
5 |
|
6 |
Welchen Wert sollte i nach der Ausführung des folgenden Codeabschnitts haben |
7 |
und warum (Kapitel im C++-Standard)? Bitte nicht für die Erfindung des |
8 |
kranken Konstrukts steinigen, ist nicht von mir... |
9 |
|
10 |
int i = 0; // Initialisierung |
11 |
i = i++; |
12 |
|
13 |
Argumentation 1: |
14 |
|
15 |
Postinkrement hat Präzedenz 14, Zuweisung 2, folglich wird erst Postinkrement |
16 |
ausgeführt (Eval-Reihenfolge ist auch rechts->links angegeben), dann |
17 |
Zuweisung (auch logisch, ich hab ja sonst keinen Wert für die Zuweisung). i |
18 |
ist 0, wird kurzzeitig per Postinkrement 1, da aber der Wert von i++, d.h. |
19 |
VOR Inkrementierung zugewiesen wird (0) wird's gleich wieder 0 gesetzt. |
20 |
|
21 |
Argumentation 2: |
22 |
|
23 |
i wird sich selbst zugewiesen (0) und dann zu 1 inkrementiert. |
24 |
|
25 |
Letzteres macht z.B. der gcc-4.1.1 so, ersteres macht z.B. die Sun-Java-VM so, |
26 |
auch aus dem C++-Standard könnte man's so 'rauslesen (weiß nicht, wie aktuell |
27 |
ich damit bin). |
28 |
|
29 |
Viele Grüße |
30 |
Eckard |
31 |
|
32 |
-- |
33 |
gentoo-user-de@g.o mailing list |