Numerische Konstanten

Topsen

Mitglied
Hallo Zusammen,

alles fing mit diesem Warning an (warning message "decimal constant is unsigned only in ISO C90")
Auf folgenden Code z.B.: signed int zahl = -2147483648.
Die Grenzen eines signed int (hier 32 Bit) sind -2147483648 +2147483647
Somit wäre diese Zuweisung doch rechtens.
Mit der Zuweisung eines Suffixes L (signed int zahl = -2147483648L) gab es keine Fehlermeldung mehr.
Kann mir einer die genaue Erklärung geben, WANN und vor allem WARUM ich die Suffixe U, UL, LL, ULL verwenden muss?
Bei welchen Datentypen int, long, short (32Bit, 64Bit, 16 Bit)

Habe schon mehrere Erklärungsversuche im Netz gefunden, aber keine hat mich überzeugt (oder ich habe sie nicht verstanden :-) )

Danke und Grüße,

Topsen
 
Hallo Topsen,

also zu U UL LL ULL
U = unsigned (ohne Vorzeichen)
UL = unsigned long (long ohne Vorzeichen) 4.294.967.295 // 2^32 - 1
LL = long long: -(2^63 - 1) bis 2^63 - 1
ULL = unsigned long long: 2^64 - 1

signed int, wie in Deinem Beispiel, ist aber nur (-32767) bis 32767, also: -(2^15 - 1) bis 2^15 - 1!!
Also immer entweder int oder long deklarieren!!

Hoffe, das war verständlich :confused:

tschüss
Klaus
 
Zuletzt bearbeitet:
Zurück