unsigned Modifikator
Jeder Integer-Typ kann mittels des Modifikators unsigned explizit als vorzeichenloser Typ deklariert werden.
Im Gegensatz dazu wird mittels des signed Modifikators ein Integer-Typ als vorzeichenbehaftet deklariert.
Details
Integer-Typen werden in modernen Systemen als binäre Ganzzahlen codiert. Wenn zu einer Typangabe wie char, short, int, long oder long long das Keyword unsigned angegeben wird, wird der Integer-Typ explizit als vorzeichenlos deklariert. Dies bedeutet, dass der Typ ausschliesslich positive Werte speichert (inklusive Null). Vorsicht: Wird das Keyword 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 unsigned int-Typ an.
Vorzeichenlose Integer-Typen werden gerne gebraucht, um Grössen zu speichern, welche explizit nur positive Werte enthalten können. Es ist jedoch zu beachten, dass Berechnungen mit diesen Grössen ebenfalls nur vorzeichenlose Ergebnisse liefern. Ein häufig gesehener Fehler ist das Rückwärts-Zählen in einer for-Schleife:
4
3
2
1
0
4294967295
4294967294
4294967293
...
Die maximal und minimal möglichen Werte von unsigned-Typen sind in der limits-Bibliothek definiert.
Bei der Angabe von festen Werten im Quellcode können Integer-Werten das Suffix u angehängt werden, um sie explizit als unsigned zu kennzeichnen.
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 können zu grosse vorzeichenlose Zahlen nicht korrekt in einen vorzeichenbehafteten Typ umgewandelt werden, was dann zu negativen Werten führt:
Ein Javascript-Programm zur Veranschaulichung der Effekte beim Abschneiden von Bits ist beim Zahlensystem-Umrechner zu finden.