|
![ein Kapitel weiter](../weiter.gif)
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 weiter](../weiter.gif)
© 2001,2002 Jürgen Wolf
|