1 |
Eckard Brauer schrieb: |
2 |
> Gesundes neues Jahr allen! |
3 |
|
4 |
Dir auch. |
5 |
|
6 |
> int i = 0; // Initialisierung |
7 |
> i = i++; |
8 |
> |
9 |
> Argumentation 1: |
10 |
> |
11 |
> Postinkrement hat Präzedenz 14, Zuweisung 2, folglich wird erst |
12 |
> Postinkrement ausgeführt (Eval-Reihenfolge ist auch rechts->links |
13 |
> angegeben), dann Zuweisung (auch logisch, ich hab ja sonst keinen Wert für |
14 |
> die Zuweisung). i ist 0, wird kurzzeitig per Postinkrement 1, |
15 |
|
16 |
Bis hierhin geh ich mit. |
17 |
|
18 |
> da aber der |
19 |
> Wert von i++, d.h. VOR Inkrementierung zugewiesen wird (0) wird's gleich |
20 |
> wieder 0 gesetzt. |
21 |
|
22 |
Aber was soll dass für eine Argumentation sein? |
23 |
|
24 |
Wenn ich meinem C-Buch trauen darf (in der Hoffnung, das C++ da nicht extrem |
25 |
anders ist), berechnest du das Inkrement und weißt dies im Anschluß der |
26 |
Variable zu. Wie die heißt, und ob das in dem Falle dieselbe Variable (oder |
27 |
auch Pointer, oder was auch immer), ist doch völlig wurscht. Also sollte doch |
28 |
am Ende i=1 sein. |
29 |
|
30 |
> Argumentation 2: |
31 |
> |
32 |
> i wird sich selbst zugewiesen (0) und dann zu 1 inkrementiert. |
33 |
|
34 |
Das ist auch irgendwie Blödsinn (zumindest hört es sich so an). Die Zuweisung |
35 |
hat doch niedrigere Priorität und wird tatsächlich später ausgeführt. Der |
36 |
Schritt, wo i=0 zugewiesen wird, steht eine Zeile obendrüber. ;) |
37 |
|
38 |
> ersteres macht z.B. die Sun-Java-VM so |
39 |
|
40 |
Das klingt das nach einem Bug, zumindest, wenn dann am Ende wirklich Null |
41 |
rauskommt. ;) |
42 |
|
43 |
> Viele Grüße |
44 |
> Eckard |
45 |
|
46 |
-- |
47 |
MfG Jan |
48 |
|
49 |
OpenPGP Fingerprint: |
50 |
0E9B 4052 C661 5018 93C3 4E46 651A 7A28 4028 FF7A |