Häh? Warum geben folgende Zeilen eine Warning aus?
C++:
unsignedlongint in; in=-LONG_MIN+LONG_MAX-100;
Ich habe extra unsigned long int genommen, damit möglichst grosse zahlen keinen überlauf geben. wenn ich in ausgeben lasse, dann ist natürlich kein überlauf vorhanden -> überlauf kommt halt wie erwartet erst nachdem ich "in" 101 mal inkrementiert habe.
Code:
montecarlo.cc: In function `int main()': montecarlo.cc:13: Warnung: integer overflow in expression
Die Warnung kommt, weil LONG_MIN und LONG_MAX vermutlich signed longs sind, dadurch wird der gesamte Ausdruck so berechnet, als hättest Du mit einem Vorzeichen zu tun. Der Ausdruck:
C++:
-LONG_MIN+LONG_MAX-100
wird vermutlich umgesetzt als:
C++:
-(-2147483648L)+2147483647L -100;
oder was analoges. Ich würde dir empfehlen zu schreiben:
C++:
ULONG_MAX-100
-- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21)