ein Kapitel zurück                                           ein Kapitel weiter

Mit 'unsigned' weisen sie den Compiler an das er eine Datentyp Vorzeichenlos behandeln soll. Dadurch erhöht sich auch der Wertebereich der positiven Zahlen. Mit 'signed' machen sie genau das Gegenteil. Aber 'signed' ist bei allen Variablentypen voreingestellt. Das heißt...

int a; und signed int a;

...ist das selbe. 'signed' wird eigentlich so gut wie nie benötigt. Am besten sehen sie sich dazu die Tabelle an auf der sich auch alle bisher kennen gelernten Variablentypen aufhalten...

Name Größe Wertebereich
char, signed char 1 Byte == 8 Bit -128...127
unsigned char 1 Bytes == 8 Bit 0...255
short, signed short 2 Bytes == 16 Bit -32768...+32767
unsigned short 2 Bytes == 16 Bit 0...65535
int, signed int 4 Bytes == 32 Bit -2147483648...-2147483648
unsigned int 4 Bytes == 32 Bit 0...4294967295
long, signed long 4 Bytes == 32 Bit -2147483648...-2147483648
unsigned long 4 Bytes == 32 Bit 0...4294967295
float 4 Bytes == 32 Bit 3.4*10-38...3.4*1038
double 8 Bytes == 64 Bit 1.7*10-308...1.7*10308
long double 10 Bytes == 80 Bit 3.4*10-4932...3.4*104932

Nehmen wir nochmals char als Beispiel, da es sich mit seiner 8 Bit-Breite am einfachsten zum Darstellen eignet.
Manch einer wird sich im Kapitel zuvor gedacht haben Wieso ich mit char nur Werte zwischen -128...127 darstellen kann. Denn wenn alle Bit´s gesetzt sind.....

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
128 64 32 16 8 4 2 1
1 1 1 1 1 1 1 1

...bekommen wir doch als Ergebnis 255 zurück. Aber so läuft das nicht. Sonst wäre es ja nicht möglich einen negativen Wert wie -100 anzuzeigen. Wenn sie nun das Schlüsselwort unsigned vor einen Datentyp stellen sind keine negativen Zahlen mehr möglich. Somit verdoppelt sich aber der positive Wert der Zahl (siehe Tabelle). Sollten sie z.B. 2 Zahlen subtrahieren und es kommt ein negatives Ergebnis heraus und sie haben vor Ihrem Typen des Ergebnisses das Schlüsselwort unsigned gesetzt, so wird das Minus der negativen Zahl ignoriert und es wird eine positive Zahl daraus. Bitte beachten sie das wenn sie Programme schreiben.

Daraus ergibt sich also....

signed = Vorzeichenbehaftet
unsigned = Vorzeichenlos


Wollen sie das der Datentyp unsigned int auch als Vorzeichenloser Datentyp behandelt wird, müssen sie bei der Formatangabe %u dafür verwenden....

/*Download:signed.c*/
#include <stdio.h>

int main()
{
unsigned int zahl= -10000;
unsigned char zeichen= -100;

printf("Zahl = %u \n",zahl);
printf("Zeichen = %d \n",zeichen);

return 0;
}

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf