1 |
Am Freitag 05 Januar 2007 17:25 schrieb Eckard Brauer: |
2 |
> Argumentation 1: |
3 |
> |
4 |
> Postinkrement hat Präzedenz 14, Zuweisung 2, folglich wird erst |
5 |
> Postinkrement ausgeführt (Eval-Reihenfolge ist auch rechts->links |
6 |
> angegeben), dann Zuweisung (auch logisch, ich hab ja sonst keinen |
7 |
> Wert für die Zuweisung). i ist 0, wird kurzzeitig per |
8 |
> Postinkrement 1, da aber der Wert von i++, d.h. VOR |
9 |
> Inkrementierung zugewiesen wird (0) wird's gleich wieder 0 |
10 |
> gesetzt. |
11 |
> |
12 |
> Argumentation 2: |
13 |
> |
14 |
> i wird sich selbst zugewiesen (0) und dann zu 1 inkrementiert. |
15 |
> |
16 |
> Letzteres macht z.B. der gcc-4.1.1 so, ersteres macht z.B. die |
17 |
> Sun-Java-VM so, auch aus dem C++-Standard könnte man's so |
18 |
> 'rauslesen (weiß nicht, wie aktuell ich damit bin). |
19 |
|
20 |
In Java ist es nun mal so spezifiziert [1] - Jan, it's not a bug, |
21 |
it's a feature. |
22 |
|
23 |
Aber auch z. B. D, wenn nicht anders spezifiziert, legt sich auf |
24 |
keine Auswertungsreihenfolge von Komponenten in einem Ausdruck fest |
25 |
[2, Abschnitt 'Evaluation Order']. Kann ja jeder selbst |
26 |
ausprobieren [3]. |
27 |
|
28 |
[1] |
29 |
http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.14.2 |
30 |
[2] http://www.digitalmars.com/d/expression.html |
31 |
[3] http://en.wikipedia.org/wiki/C_syntax#Undefined_behavior |
32 |
|
33 |
Gruesse, |
34 |
-- |
35 |
Martin Bürger |
36 |
1024D/27C9019B@××××××××××××××××××.at/~mbuerger/key.asc |
37 |
Key fingerprint = D10D 97EF 0C32 B337 5A12 0B6C 2D47 7575 27C9 019B |
38 |
|
39 |
-- |
40 |
gentoo-user-de@g.o mailing list |