"int abc= -2147483648;"
MSDN sagt:
INT_MIN Minimum value for a variable of type int. –
2147483647 – 1
Warnung unterbleibt bei:
int "abc= -2147483647-1";
Ist -2147483647-1 != -2147483648???
Danke für eine Hilfe!!
> Folgender Quelltext liefert Warnung C4146
> warning C4146: Einem vorzeichenlosen Typ wurde ein unaerer
> Minus-Operator zugewiesen; das Ergebnis ist weiterhin
> vorzeichenlos;
>
> "int abc= -2147483648;"
Die Konstante 2147483648 ist auf unserer gegebenen Platform nur als
unsigned, nicht als signed int darstellbar, daher die Fehlermeldung.
> MSDN sagt:
> INT_MIN Minimum value for a variable of type int. –
> 2147483647 – 1
>
> Warnung unterbleibt bei:
>
> int "abc= -2147483647-1";
-2147483647 ist als int darstellbar, 1 davon subtrahiert erzeugt einen
Überlauf, was aber durchaus zulässig ist.
> Ist -2147483647-1 != -2147483648???
Es gibt viele Bereiche, wo reine Mathematik und Computerarithmetik
zwangsläufig verschiedene Regeln haben müssen.
> Warum tritt eine entsprechende Warnung dann nicht unter
> DevCpp 4 auf?
Die Warnung ist eine freundliche Aufmerksamkeit des Compilers, daß Code
dasteht, der in aller Regel so nicht beabsichtigt war. Es ist weder ein
Fehler, noch ist der Compiler lt. Sprachdefinition zu irgendwas
verpflichtet. Es ist eben eine Warnung. Andere Compiler können sich hier
anders verhalten.
> Computerarithmetik stimmt entweder immer oder nie?
Ich habe den Eindruck, Du bist in diesem Thema bereits zu einer bestimmten
Ansicht gekommen, so daß es mir schwerfallen wird, Dich zu überzeugen. Und
ehrlich gesagt, hab ich unter diesen Umständen auch keinen Ehrgeiz dazu.