Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Warnung C4146 in VC++ 6.0

14 views
Skip to first unread message

Volkmar Mang

unread,
Mar 6, 2002, 7:12:08 AM3/6/02
to
Folgender Quelltext liefert Warnung C4146
warning C4146: Einem vorzeichenlosen Typ wurde ein unaerer
Minus-Operator zugewiesen; das Ergebnis ist weiterhin
vorzeichenlos;

"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!!

Eberhard Schefold

unread,
Mar 6, 2002, 7:47:17 AM3/6/02
to
Volkmar Mang schrieb:

> 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.

Volkmar Mang

unread,
Mar 6, 2002, 3:58:24 PM3/6/02
to

>-----Originalnachricht-----

>Volkmar Mang schrieb:
>
>> 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?
Computerarithmetik stimmt entweder immer oder nie?

Eberhard Schefold

unread,
Mar 7, 2002, 3:45:50 AM3/7/02
to
Volkmar Mang schrieb:

> 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.

Blau Fasel

unread,
Jul 18, 2022, 11:10:53 AM7/18/22
to
Volkmar Mang schrieb am Mittwoch, 6. März 2002 um 13:12:08 UTC+1:
> Folgender Quelltext liefert Warnung C4146
> warning C4146: Einem vorzeichenlosen Typ wurde ein unaerer
>
> Danke für eine Hilfe!!
Hallo Volkmar,
ich würde gerne mit dir persönlich Kontakt aufnehmen.
Geht das bitte? Ist wichtig!
danke!
0 new messages