signed
Modifikator
Jeder Integer-Typ kann mittels des Modifikators signed
explizit als vorzeichenbehafteter Typ deklariert werden.
Im Gegensatz dazu wird mittels des unsigned Modifikators
ein Integer-Typ als vorzeichenlos deklariert.
Details
Integer-Typen werden in modernen Systemen als binäre Ganzzahlen codiert, wobei negative Werte normalerweise mittels des Zweierkomplements abgebildet werden. Wenn zu einer Typangabe wie char
, short
, int
, long
oder long long
der Modifikator signed
angegeben wird, wird der Integer-Typ explizit als vorzeichenbehaftet deklariert. Dies bedeutet, dass der Typ sowohl negative als auch positive Werte speichert. Wird das Keyord weggelassen, wird vom Compiler mit Ausnahme des char
-Typs standardmässig signed
angenommen. Ob das Keyword vor, nach oder in der Mitte des Typs steht, spielt keine Rolle.
Wird der Basis-Typ bei der Deklaration weggelassen, nimmt der Compiler automatisch den signed int
-Typ an.
Die maximal und minimal möglichen Werte von signed
-Typen sind in der limits
-Bibliothek definiert.
Arithmetische Umwandlung
Bei Zuweisungen, Initialisierungen oder Casts zu einem anderen Integer-Typ werden durch den Compiler gegebenfalls arithmetische Umwandlungen durchgeführt. Aufgrund der Codierung von negativen Zahlen ist es grundsätzlich nicht möglich, eine vorzeichenbehaftete Zahl korrekt in einen vorzeichenlosen Typ umzuwandeln.
Ein Javascript-Programm zur Veranschaulichung der Effekte beim Abschneiden von Bits ist beim Zahlensystem-Umrechner zu finden.