Thread PERL vs. C: gleicher Code, anderes Ergebnis (47 answers)
Opened by docsnyder at 2005-09-14 16:16

murphy
 2005-09-14 21:42
#57975 #57975
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Abgesehen davon, dass das Verhalten dieses Konstruktes im C Standard nicht definiert ist, warnt einen der GCC auch noch davor:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$ cat >test.c
#include <stdio.h>

int main(void) {
int i = 0;
i = i++;
printf("%d\n", i);
return 0;
}
$ gcc-3.3 -Wall -O0 -g1 -o test test.c
test.c: In function `main':
test.c:5: warning: operation on `i' may be undefined
$ ./test
1
$ gcc-4.0 -Wall -O0 -g1 -o test test.c
test.c: In function 'main':
test.c:5: warning: operation on 'i' may be undefined
$ ./test
1
$ gcc-3.3 -Wall -O3 -g0 -o test test.c
test.c: In function `main':
test.c:5: warning: operation on `i' may be undefined
$ ./test
1
$ gcc-4.0 -Wall -O3 -g0 -o test test.c
test.c: In function 'main':
test.c:5: warning: operation on 'i' may be undefined
$ ./test
1


Wenn der Compiler schon schreit, dass er nicht weiß, was herauskommen soll, sollte man sich nicht über komische Ergebnisse wundern -- aber immerhin ist das Ergebnis konstant, wenn man die Optimierungseinstellung verändert.

Da habe ich also schon wesentlich merkwürdigeres, hässlicheres und nicht mit Compilerwarnungen versehenes Verhalten bei GCC erlebt.

Ich verstehe also gar nicht, was man damit für ein Problem haben sollte...
When C++ is your hammer, every problem looks like your thumb.

View full thread PERL vs. C: gleicher Code, anderes Ergebnis