28 Stimmen

Von int, char, float und bool, welches ist am kleinsten?

Das folgende stammt aus einem "Machen Sie zu Hause" Programmierungstest, der Teil des Bewerbungsprozesses für einen MSc in Game Development an einer britischen Universität ist:

C++ Grundlagen

Wenn ein Programm vier Variablen deklariert hätte, eine vom Typ int, eine vom Typ float, eine vom Typ char und eine vom Typ bool, welche Variable würde am wenigsten Speicherplatz im Speicher beanspruchen?

  1. int
  2. char
  3. float
  4. bool

Laut den Anweisungen gibt es nur eine wahre Aussage. Allerdings besagt mein C++-Buch (C++-Taschenreferenz, O'Reilly): "Die typische Größe eines bool beträgt ein Byte" und "Die Größe eines char beträgt ein Byte. Die Größe eines Bytes ist technisch gesehen implementierungsdefiniert, beträgt aber selten etwas anderes als acht Bits."

Verstehe ich hier etwas falsch? Welche Antwort würdest du geben und warum?

2voto

Thomas Maierhofer Punkte 2605

Der C++-Standard gibt folgende Beziehungen an:

sizeof(char) == 1
sizeof(char) <= sizeof(int) <= sizeof(long)
sizeof(float) <= sizeof(double)

...

1voto

vsz Punkte 4637

Es gibt keine Garantie für die genaue Größe dieser Typen, aber es besteht die Garantie, dass char nicht größer als short ist und short nicht größer als long ist.

Also wird char immer den geringsten Speicherplatz einnehmen, aber es könnte nicht der einzige sein, der das tut. Es ist dennoch garantiert, dass nichts anderes eine kleinere Größe haben wird.

Es könnte jedoch eine Ausnahme mit bool geben, nämlich auf einigen speziellen eingebetteten Mikrocontrollern. Sie können eine bit-Variable haben, die genau ein Bit einnimmt, jedoch befinden sie sich nicht im RAM, sondern in speziellen Registern.

Aber es sei denn, Ihre Architektur und Ihr Compiler sind besonders seltsam oder ungewöhnlich, können Sie vernünftigerweise davon ausgehen, dass char 1, short 2, long 4, long long 8 und int entweder 2 oder 4, aber in der Regel 4 Byte lang ist.

0voto

Joe Punkte 39875

Sizeof(bool) ist implementierungsabhängig.

Ist sizeof(bool) definiert?

Es ist nämlich nicht erforderlich, dass es nur ein einzelnes Byte ist.

0voto

Ryan Punkte 2667

Die richtige Antwort ist theoretisch boolean, da ein char Kenntnisse über mindestens 8 Bits erfordert, während ein bool technisch gesehen nur ein Bit benötigt. Du könntest theoretisch 8 bools in einem einzigen char speichern, wenn du wolltest.

0voto

Dmitriy Kachko Punkte 2707

Die typische Größe eines bool beträgt ein Byte. bedeutet nicht, dass es immer ein Byte ist. Die Frage bezieht sich entweder auf eine Erkenntnis, dass es keine ein-Byte-großen bool gibt oder suggeriert, dass nur eine Variable die kleinste Größe hat.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X