C-Standardbibliothek<inttypes.h>
In der C-Programmierung müssen wir bei der Behandlung von Ganzzahltypen oft sicherstellen, dass Code über verschiedene Plattformen hinweg portabel ist. Verschiedene Plattformen können unterschiedliche Ganzzahlgrößen und -darstellungen haben, was dazu führen kann, dass sich Code in verschiedenen Umgebungen inkonsistent verhält.
Um die oben genannten Probleme zu lösen, bietet die C-Standardbibliothek<inttypes.h>Die Header-Datei, die eine Reihe von Ganzzahltypen fester Größe und entsprechende Formatierungsmakros definiert und Entwicklern hilft, portablen Code zu schreiben.
inttypes.hist eine sehr wichtige Header-Datei in der C-Standardbibliothek. Sie bietet eine Reihe von Ganzzahltypen mit fester Breite und entsprechende Formatierungsmakros. Durch die Verwendung dieser Typen und Makros können Entwickler sicherstellen, dass Ganzzahlgrößen und formatierte Ausgaben auf verschiedenen Plattformen konsistent sind und so potenzielle Probleme vermieden werden.
Ganzzahltypen mit fester Breite
inttypes.hdefiniert eine Reihe von Ganzzahltypen mit fester Breite, die auf verschiedenen Plattformen dieselbe Größe haben. Die folgenden Ganzzahltypen mit fester Breite sind gebräuchlich:
int8_t: 8-Bit-Ganzzahl mit Vorzeichenuint8_t: 8-Bit-Ganzzahl ohne Vorzeichenint16_t: 16-Bit-Ganzzahl mit Vorzeichenuint16_t: 16-Bit-Ganzzahl ohne Vorzeichenint32_t: 32-Bit-Ganzzahl mit Vorzeichenuint32_t: 32-Bit-Ganzzahl ohne Vorzeichenint64_t: 64-Bit-Ganzzahl mit Vorzeichenuint64_t: 64-Bit-Ganzzahl ohne Vorzeichen
Diese Typen stellen sicher, dass Ganzzahlgrößen auf verschiedenen Plattformen konsistent sind, wodurch die Portabilität des Codes verbessert wird.
Formatierungsmakros
inttypes.hdefiniert außerdem eine Reihe von Formatierungsmakros, die inprintfundscanfzum Formatieren von Ganzzahltypen mit fester Breite in Funktionen wie verwendet werden. Diese Makros stellen sicher, dass die formatierte Ausgabe von Ganzzahlen auf verschiedenen Plattformen konsistent ist.
Die folgenden Formatierungsmakros sind gebräuchlich:
PRId8: Wird zum Formatieren verwendetint8_tvorzeichenbehaftete Ganzzahl des TypsPRIu8: Wird zum Formatieren verwendetuint8_tvorzeichenlose Ganzzahl des TypsPRId16: Wird zum Formatieren verwendetint16_tvorzeichenbehaftete Ganzzahl des TypsPRIu16: Wird zum Formatieren verwendetuint16_tvorzeichenlose Ganzzahl des TypsPRId32: Wird zum Formatieren verwendetint32_tvorzeichenbehaftete Ganzzahl des TypsPRIu32: Wird zum Formatieren verwendetuint32_tvorzeichenlose Ganzzahl des TypsPRId64: Wird zum Formatieren verwendetint64_tvorzeichenbehaftete Ganzzahl des TypsPRIu64: Wird zum Formatieren verwendetuint64_tvorzeichenlose Ganzzahl des Typs
Diese Makros werden wie folgt verwendet:
Beispiel
#include <inttypes.h>
int main() {
int32_t myInt = 42;
printf("The value of myInt is: %" PRId32 "\n", myInt);
return 0;
}
Im obigen Code,PRId32Makro zur Formatierungint32_tTyp einer vorzeichenbehafteten Ganzzahl, der eine konsistente Ausgabe über verschiedene Plattformen hinweg gewährleistet.
Das Ausgabeergebnis ist:
The value of myInt is: 42
Andere Makros
inttypes.hdefiniert außerdem einige andere nützliche Makros, zum Beispiel:
INT8_MIN、INT8_MAX:int8_tdie Minimal- und Maximalwerte des TypsUINT8_MAX:uint8_tMaximalwert des TypsINT16_MIN、INT16_MAX:int16_tdie Minimal- und Maximalwerte des TypsUINT16_MAX:uint16_tMaximalwert des TypsINT32_MIN、INT32_MAX:int32_tdie Minimal- und Maximalwerte des TypsUINT32_MAX:uint32_tMaximalwert des TypsINT64_MIN、INT64_MAX:int64_tdie Minimal- und Maximalwerte des TypsUINT64_MAX:uint64_tMaximalwert des Typs
Diese Makros können Entwicklern helfen, Ganzzahltypen mit fester Breite im Code sicher zu verwenden und Überläufe sowie andere potenzielle Probleme zu vermeiden.
Beispiel
Das Folgende ist eine Verwendung voninttypes.hist ein vollständiges Beispiel, das zeigt, wie man Ganzzahltypen mit fester Breite und ihre Formatierungsmakros definiert und verwendet:
Beispiel
#include <inttypes.h>
int main() {
int32_t myInt = 42;
uint64_t myUInt = 1234567890123456789ULL;
printf("The value of myInt is: %" PRId32 "\n", myInt);
printf("Der Wert von myUInt ist: %" PRIu64 "\n", myUInt);
printf("Der minimale Wert von int32_t ist: %" PRId32 "\n", INT32_MIN);
printf("Der maximale Wert von uint64_t ist: %" PRIu64 "\n", UINT64_MAX);
return 0;
}
Das Ausgabeergebnis ist:
The value of myInt is: 42 The value of myUInt is: 1234567890123456789 The minimum value of int32_t is: -2147483648 The maximum value of uint64_t is: 18446744073709551615
Im obigen Code haben wir eineint32_tvorzeichenbehaftete Ganzzahl vom Typ und eineuint64_tArt vorzeichenloser Ganzzahl definiert und die entsprechenden Formatierungsmakros verwendet, um sie auszugeben. Wir haben außerdemINT32_MINundUINT64_MAXMakros verwendet, um die Minimal- und Maximalwerte dieser Typen auszugeben.