Es würde durch die Architektur definiert, die Sie verwendeten. Auf einem Zilog z80-Chip (gebräuchlicher eingebetteter Chip) hätten sie eine Größe, während sie auf einem x86-Chipsatz eine völlig andere Größe haben könnten. Die Größen selbst sind jedoch feste Verhältnisse zueinander. Im Wesentlichen sind short und long keine Typen, qualifizieren sich jedoch für den int-Typ. Short-Ints sind eine Größenordnung kleiner als (Regular) Int und Long-Ints eine Größenordnung höher. Angenommen, Ihr Int ist auf 4 Bytes begrenzt, der kurze Qualifier begrenzt es auf 4 Bytes, obwohl 2 Bytes ebenfalls sehr häufig sind, und der lange Qualifier erhöht es möglicherweise auf 8 Bytes, obwohl es weniger als 4 Bytes betragen kann. Denken Sie daran, dass dies auch der Wortlänge unterliegt, sodass Sie auf einem 32-Bit-System die maximale Länge von 4 Bytes pro Int erreichen, wenn Sie die gleiche Länge wie bei einem regulären Int verwenden. Somit ist Short ≤ Int ≤ Long.
Wenn Sie es jedoch erneut verlängern, können Sie das int in die nächste Zelle verschieben, sodass Sie 8 Byte Speicherplatz haben. Dies ist die Wortgröße für 64-Bit-Maschinen, damit sie sich nicht um solche Dinge kümmern müssen und nur eine Zelle für Long-Ints verwenden, damit sie eine andere Größenordnung über den Standard-Ints haben, während Long-Ints wirklich Bit bekommen.
Was die Auswahl anbelangt, läuft es auf etwas hinaus, worüber sich Java-Programmierer beispielsweise keine Gedanken machen müssen. "Was ist deine Architektur?" Da alles von der Wortgröße des Speichers der betreffenden Maschine abhängt, müssen Sie dies im Voraus verstehen, bevor Sie sich für eine Verwendung entscheiden. Sie wählen dann die kleinste vernünftige Größe, um so viel Speicher wie möglich zu sparen, da dieser Speicher zugewiesen wird, unabhängig davon, ob Sie alle darin enthaltenen Bits verwenden oder nicht. Sie sparen also, wo Sie können, und wählen Shorts aus, wenn Sie können und Ints, wenn Sie nicht können und wenn Sie etwas benötigen, das größer ist als die regulären Ints, die Sie geben. Sie würden nach Bedarf verlängern, bis Sie die Wortgrenze erreicht haben. Dann müssten Sie eine große Anzahl von Routinen bereitstellen oder sie aus einer Bibliothek beziehen.
C ist zwar eine "tragbare Baugruppe", aber Sie müssen Ihre Hardware noch kennen.
<stdint.h>