Ich weiß, dass der C++-Standard ausdrücklich nur die Größe von char
, signed char
y unsigned char
. Außerdem gibt es Garantien, dass z. B., short
ist mindestens so groß wie char
, int
so groß wie short
usw. Aber keine ausdrücklichen Garantien über den absoluten Wert von, sagen wir, sizeof(int)
. Das war die Information in meinem Kopf, und ich habe mich damit abgefunden. Vor einiger Zeit stieß ich jedoch auf einen Kommentar in SO (kann ihn nicht mehr finden), dass in C long
ist garantiert mindestens 4 Byte groß, und diese Anforderung wird von C++ "geerbt". Ist das der Fall? Wenn ja, welche anderen impliziten Garantien gibt es für die Größe von arithmetischen Typen in C++? Bitte beachten Sie, dass ich absolut nicht interessiert bin an praktisch Garantien über verschiedene Plattformen hinweg in dieser Frage, nur theoretisch ein.
Antworten
Zu viele Anzeigen?Der C-Standard sagt nicht ausdrücklich, dass long
muss mindestens 4 Byte groß sein, aber es wird ein Mindestbereich für die verschiedenen Integraltypen angegeben, was eine Mindestgröße impliziert.
Zum Beispiel ist die Mindestreichweite einer unsigned long
ist 0 bis 4.294.967.295. Man braucht mindestens 32 Bits, um jede einzelne Zahl in diesem Bereich darzustellen. Also ja, der Standard garantiert (indirekt), dass eine long
mindestens 32 Bit beträgt.
C++ erbt die Datentypen von C, Sie müssen sich also den C-Standard ansehen. Der C++-Standard verweist in diesem Fall tatsächlich auf Teile des C-Standards.
- See previous answers
- Weitere Antworten anzeigen