länge von unsigned char
-
Wir sollen diese Frage beantworten
wie verhindern sie bei der besetzung einer Variablen eine Wertebreichsüberschreitung ?
durch casten auf einen geeigneten Datentyp zb; unsigned int
ist meine Antwort nun wollte ich das mal in einen Programm ausprobieren!
unsigned int 2^16=65536 mögöichkeiten => zahlen bis 65535 darstellbar.
#include <stdio.h> unsigned int test; void main(void) { test=69999; printf("%i",test); getchar(); }
Wieso wird mir diese Zahl dargestellt?dachte es geht nur bis 65535
mfg Phil
-
int sind 4 byte was du suchst ist short
-
Die Größe von den normalen built-in Typen ist nicht genau festgelegt, der Standard definiert lediglich Mindestgrößen, für int z.B. eben 2 Byte (genaugenommen ist allerdings eigentlich nichtmal festgelegt, wie groß ein Byte ist). Je nach Compiler und Plattform wird int eine andere Größe haben (im PC Bereich wohl meistens 4 Byte)...
Wenn du genau definierte Größen brauchst, dann verwend die typedefs aus stdint.h
-
Alles klar danke jetzt hab ich es verstanden
danke euch
-
Die Größe der Variablentypen sind ein Vielfaches von
char
.
Einchar
hat mindestens 8 Bit.
sizeof(char) ist per Default 1.Es gilt
sizeof(char) < sizeof(short) <= sizeof(int) <= sizeof(long)
.Bei den Compiler für MS-DOS und Windows 3.x war ein
int
(meist) 16 Bit.
-
DirkB schrieb:
Es gilt
sizeof(char) < sizeof(short) <= sizeof(int) <= sizeof(long)
.Nein, sizeof(short) ist nicht zwingend größer als sizeof(char).
-
Bashar schrieb:
Nein, sizeof(short) ist nicht zwingend größer als sizeof(char).
Nach K&R muss short mindestens 16 Bit haben, also groesser als char.
Weiss aber nicht, was im aktuellen Standard steht.Gruesse
-
gigg schrieb:
Nach K&R muss short mindestens 16 Bit haben, also groesser als char.
Größer als die Mindestgröße von char. Niemand sagt aber, dass char nicht auch bereits 16 Bit haben kann.
-
dot schrieb:
Größer als die Mindestgröße von char. Niemand sagt aber, dass char nicht auch bereits 16 Bit haben kann.
Das Zwinkern ist unnötig, sowas gibt es wirklich.
-
dot schrieb:
gigg schrieb:
Nach K&R muss short mindestens 16 Bit haben, also groesser als char.
Größer als die Mindestgröße von char. Niemand sagt aber, dass char nicht auch bereits 16 Bit haben kann.
Ok. War immer davon ausgegangen, das char ein Byte ist, weil sizeof(char) 1 ist.
-
gigg schrieb:
Ok. War immer davon ausgegangen, das char ein Byte ist, weil sizeof(char) 1 ist.
Niemand sagt, dass ein Byte immer 8 Bit haben muss.
-
Ein char hat in C mindestens 8 Bit. Ein Byte ist in C das, was ein char belegt, also auch mindestens 8 Bit. Wenn man allgemein von den üblichen 8-Bit-Bytes sprechen will, sagt man am besten Oktett.
-
dot schrieb:
Niemand sagt, dass ein Byte immer 8 Bit haben muss.
Das ist mir jetzt auch neu. Aber ich lerne gern dazu.
-
Mal ein Auszug aus K&R 1.Auflage deutsch.
Anhang A, 2.6 Hardware Eigenschaften
Zu Honywell 6000 char 9 Bit int 36 short 36 long 36 float 36 double 72
Der restlichen Hardwarebeispiele haben 8-Bit char und unterscheiden sich nur in der Größe von int (16- bzw. 32.Bit)
-
DirkB schrieb:
Zu Honywell 6000)
Selbst auf aktuellen Prozessoren ist sowas noch üblich. Beispiel TIs C55x-DSPs:
char, signed char 16 bits unsigned char 16 bits short, signed short 16 bits unsigned short 16 bits int, signed int 16 bits unsigned int 16 bits long, signed long 32 bits unsigned long 32 bits long long 40 bits unsigned long long 40 bits enum 16 bits float 32 bits double 32 bits long double 32 bits pointers (data) small memory mode 16 bits large memory mode 23 bits pointers (function) 24 bits
Quelle: TIs Userguide für den C-Compiler.
http://www.ti.com/litv/pdf/spru281fImmerhin ist es Zweierkomplement.
-
Sind übrigens auch IEC-559-Floats. Double und Long Double scheinen einfach zu Float identisch zu sein. Gibt also nur Single-Precision.