Hallo,
vielleicht OT, weil nicht Linux, aber es ist C++ und passiert auch unter Linux ;-)
Hier folgen zwei kleine Programme und ich suche eine plausible Erklärung für die Ausgabe. (Passieren hier undefinierte Dinge? Wenn ja, wo steht, daß es undefiniert ist, was passiert?)
Probiert sowohl mit gcc version 2.95.2 20000220 (Debian GNU/Linux) als auch mit MSCVC++ 6.0. (Wenn ich mich recht erinnere, dann dort mit den selben Resultaten.)
Danke schonmal.
Heiko
#include <iostream> using namespace std;
int main() { int z = 5;
// (1) // was passiert? Werden wir 67 oder 76 sehen? cout << ++z << ++z << endl; // -> 76
double d = 5; int i = 5;
// (2) // Und was werden wir hier wohl sehen? // (Was überhaupt, und auch zweimal das selbe?) cout << ++d * ++d << endl; // -> 42 cout << ++i * ++i << endl; // -> 49
return 0; }
Vielleicht kann das ja einer, der sich als C++-Experte fühlt, mal bitte ausprobieren. Für C-Jünger ist wenigstens noch ein Problem (das erste):
#include <stdio.h>
int main() { int z = 5; double d = 5; int i = 5;
// was passiert? Werden wir 67 oder 76 sehen? printf("%d%d\n", ++z, ++z);
// -> Es ist jedesmal 42 zu sehen, das leuchtet mir auch // einigermaßen ein. Ist also in C kein Problem. printf("%f\n", ++d * ++d); printf("%f\n", ++i * ++i);
return 0; }