Forum: PC-Programmierung sizeof in C und C++


von Dennis S. (eltio)


Lesenswert?

Hallo zusammen,

sizeof gibt in C die Größe des char-Datentyps in Byte zurück. char muss 
nicht unbedingt 8 Bit groß sein. Was bekomme ich für einen Wert wenn auf 
einer bestimmten Architektur ein char 14 Bit groß ist?

In "The C++ Programming language" steht
1
[...]the sizes of other types are quoted in multiples of the size of a char[...]

Bedeutet das, dass "größere" Datentypen immer ein Vielfaches von char 
sein müssen?

Gruß
Dennis

von Peter II (Gast)


Lesenswert?

sizeof(char) ist per Definition = 1 egal wie viel bit es hat.

von Dr. Sommer (Gast)


Lesenswert?

Dennis S. schrieb:
> sizeof gibt in C die Größe des char-Datentyps in Byte zurück.
Fast ;-) In C(++) ist per Definition 1 char = 1 Byte, aber 1 Byte ist 
nicht notwendigerweise 8 Bits. sizeof(X) gibt die Größe von X in 
Vielfachen von der Größe eines char zurück. Somit ist sizeof(char) 
immer 1, denn char ist nunmal genau 1 char groß.
Mit CHAR_BIT * sizeof(X) erhält man die genaue Größe eines jeden 
Datentyps in bits.

von Dennis S. (eltio)


Lesenswert?

Dr. Sommer schrieb:
> Fast ;-) In C(++) ist per Definition 1 char = 1 Byte, aber 1 Byte ist
> nicht notwendigerweise 8 Bits. sizeof(X) gibt die Größe von X in
> Vielfachen von der Größe eines char zurück. Somit ist sizeof(char)
> immer 1, denn char ist nunmal genau 1 char groß.
> Mit CHAR_BIT * sizeof(X) erhält man die genaue Größe eines jeden
> Datentyps in bits.

Ahhh... stimmt, da war was. Vielen Dank für die Ausführungen! Ich war 
durch die Beschreibung von Stroustrup irgendwie durcheinander gekommen.

Gruß
Dennis

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.