Die Größen der Standard-C-Datentypen werden von der Compiler-Implementierung bestimmt. Gemäß dem Standard muss ein int Werte im Bereich von -32767 bis 32767 (16 Bit) enthalten können, kann jedoch größer sein. Die Größe eines int ist normalerweise der natürlichste Wert für die CPU - die Wortgröße oder die Größe eines CPU-Registers.
Die einzige Möglichkeit, dies sicher zu wissen, besteht darin, das Compiler-Handbuch zu konsultieren oder Testcode zu schreiben. Es ist eine gute Idee, eine Kopie des Handbuchs für einen eingebetteten Compiler zu haben, da die Besonderheiten der Ausrichtung und Datenspeicherung bei der eingebetteten Programmierung eher eine Rolle spielen. Wichtiger sind auch Compiler-Erweiterungen (z. B. zur Interrupt-Unterstützung).
Wenn Sie einen C99-kompatiblen Compiler haben, ist es einfacher, die in definierten uintX_t-Typen zu verwenden, um die gewünschte Größe zu erhalten.
Als Referenz sind hier die Mindestgrößen für andere Datentypen aufgeführt, die Abschnitt 5.2.4.2.1 des C99-Standards entnommen sind. Beachten Sie, dass die Zweierkomplementarithmetik nicht erforderlich ist, obwohl ich keine Komplement- oder Vorzeichengrößenmaschinen auf der Oberseite meines Kopfes kenne.
char (Bytegröße): sizeof (char) ist immer gleich 1. Vorzeichenbehaftete Zeichen müssen Werte im Bereich von -127 bis 127 enthalten. Vorzeichenlose Zeichen müssen Werte im Bereich von 0 bis 255 enthalten. Der Standard gibt auch die Mindestanzahl von Bits in a an char / byte, das ist 8.
kurz: -32767 bis 32767 für signiert, 0 bis 65535 für nicht signiert. Entspricht 16 Bit.
int: Wie kurz.
lang: -2147483647 bis 2147483647 für signiert, 0 bis 4294967295 für nicht signiert. Entspricht 32 Bit.
lang lang: -9223372036854775807 bis 9223372036854775807 für signiert, 0 bis 18446744073709551615 für nicht signiert. Entspricht 64 Bit.
Zeiger: Implementierung definiert. Der Standard erlaubt unterschiedliche "Darstellungs- und Ausrichtungsanforderungen" für Zeiger auf unterschiedliche Datentypen, aber das habe ich in der Praxis noch nie gesehen.