Namensräume
Varianten
Aktionen

Ganzzahltypen mit fester Breite (seit C99)

Von cppreference.com
< c‎ | types

Inhalt

[bearbeiten] Typen

Definiert in Header <stdint.h>
int8_t
int16_t
int32_t
int64_t
signierter Ganzzahltyp mit einer Breite von
genau 8, 16, 32 bzw. 64 Bits
ohne Auffüllbits und unter Verwendung von 2er-Komplement für negative Werte
(nur bereitgestellt, wenn die Implementierung den Typ direkt unterstützt)
int_fast8_t
int_fast16_t
int_fast32_t
int_fast64_t
schnellster signierter Ganzzahltyp mit einer Breite von
mindestens 8, 16, 32 bzw. 64 Bits
int_least8_t
int_least16_t
int_least32_t
int_least64_t
kleinster signierter Ganzzahltyp mit einer Breite von
mindestens 8, 16, 32 bzw. 64 Bits
intmax_t maximaler Ganzzahltyp
intptr_t Ganzzahltyp, der einen Zeiger aufnehmen kann
uint8_t
uint16_t
uint32_t
uint64_t
vorzeichenloser Ganzzahltyp mit einer Breite von
genau 8, 16, 32 bzw. 64 Bits
(nur bereitgestellt, wenn die Implementierung den Typ direkt unterstützt)
uint_fast8_t
uint_fast16_t
uint_fast32_t
uint_fast64_t
schnellster vorzeichenloser Ganzzahltyp mit einer Breite von
mindestens 8, 16, 32 bzw. 64 Bits
uint_least8_t
uint_least16_t
uint_least32_t
uint_least64_t
kleinster vorzeichenloser Ganzzahltyp mit einer Breite von
mindestens 8, 16, 32 bzw. 64 Bits
uintmax_t maximaler vorzeichenloser Ganzzahltyp
uintptr_t vorzeichenloser Ganzzahltyp, der einen Zeiger aufnehmen kann

Die Implementierung kann `typedef`-Namen intN_t, int_fastN_t, int_leastN_t, uintN_t, uint_fastN_t und uint_leastN_t definieren, wenn N nicht 8, 16, 32 oder 64 ist. `typedef`-Namen der Form intN_t dürfen nur definiert werden, wenn die Implementierung einen Ganzzahltyp dieser Breite ohne Padding unterstützt. Somit bezeichnet uint24_t einen vorzeichenlosen Ganzzahltyp mit einer Breite von genau 24 Bits.

Jedes der unten aufgeführten Makros ist definiert, wenn und nur wenn die Implementierung den entsprechenden `typedef`-Namen definiert. Die Makros INTN_C und UINTN_C entsprechen den `typedef`-Namen int_leastN_t und uint_leastN_t.

[bearbeiten] Makrokonstanten

Definiert in Header <stdint.h>
Gezielte Ganzzahlen : Breite
INT8_WIDTHINT16_WIDTHINT32_WIDTHINT64_WIDTH
(C23)(optional)
Bitbreite eines Objekts vom Typ int8_t, int16_t, int32_t, int64_t (genau 8, 16, 32, 64)
(Makro-Konstante)
INT_FAST8_WIDTHINT_FAST16_WIDTHINT_FAST32_WIDTHINT_FAST64_WIDTH
(C23)
Bitbreite eines Objekts vom Typ int_fast8_t, int_fast16_t, int_fast32_t, int_fast64_t
(Makro-Konstante)
INT_LEAST8_WIDTHINT_LEAST16_WIDTHINT_LEAST32_WIDTHINT_LEAST64_WIDTH
(C23)
Bitbreite eines Objekts vom Typ int_least8_t, int_least16_t, int_least32_t, int_least64_t
(Makro-Konstante)
INTPTR_WIDTH
(C23)(optional)
Bitbreite eines Objekts vom Typ intptr_t
(Makro-Konstante)
INTMAX_WIDTH
(C23)
Bitbreite eines Objekts vom Typ intmax_t
(Makro-Konstante)
Vorzeichenbehaftete Ganzzahlen : Minimalwert
INT8_MININT16_MININT32_MININT64_MIN
Minimalwert eines Objekts vom Typ int8_t, int16_t, int32_t, int64_t
(Makro-Konstante)
INT_FAST8_MININT_FAST16_MININT_FAST32_MININT_FAST64_MIN
Minimalwert eines Objekts vom Typ int_fast8_t, int_fast16_t, int_fast32_t, int_fast64_t
(Makro-Konstante)
INT_LEAST8_MININT_LEAST16_MININT_LEAST32_MININT_LEAST64_MIN
Minimalwert eines Objekts vom Typ int_least8_t, int_least16_t, int_least32_t, int_least64_t
(Makro-Konstante)
INTPTR_MIN
Minimalwert eines Objekts vom Typ intptr_t
(Makro-Konstante)
INTMAX_MIN
Minimalwert eines Objekts vom Typ intmax_t
(Makro-Konstante)
Vorzeichenbehaftete Ganzzahlen : Maximalwert
INT8_MAXINT16_MAXINT32_MAXINT64_MAX
Maximalwert eines Objekts vom Typ int8_t, int16_t, int32_t, int64_t
(Makro-Konstante)
INT_FAST8_MAXINT_FAST16_MAXINT_FAST32_MAXINT_FAST64_MAX
Maximalwert eines Objekts vom Typ int_fast8_t, int_fast16_t, int_fast32_t, int_fast64_t
(Makro-Konstante)
INT_LEAST8_MAXINT_LEAST16_MAXINT_LEAST32_MAXINT_LEAST64_MAX
Maximalwert eines Objekts vom Typ int_least8_t, int_least16_t, int_least32_t, int_least64_t
(Makro-Konstante)
INTPTR_MAX
Maximalwert eines Objekts vom Typ intptr_t
(Makro-Konstante)
INTMAX_MAX
Maximalwert eines Objekts vom Typ intmax_t
(Makro-Konstante)
Ungenau Ganzzahlen : Breite
UINT8_WIDTHUINT16_WIDTHUINT32_WIDTHUINT64_WIDTH
(C23)(optional)
Bitbreite eines Objekts vom Typ uint8_t, uint16_t, uint32_t, uint64_t (genau 8, 16, 32, 64)
(Makro-Konstante)
UINT_FAST8_WIDTHUINT_FAST16_WIDTHUINT_FAST32_WIDTHUINT_FAST64_WIDTH
(C23)
Bitbreite eines Objekts vom Typ uint_fast8_t, uint_fast16_t, uint_fast32_t, uint_fast64_t
(Makro-Konstante)
UINT_LEAST8_WIDTHUINT_LEAST16_WIDTHUINT_LEAST32_WIDTHUINT_LEAST64_WIDTH
(C23)
Bitbreite eines Objekts vom Typ uint_least8_t, uint_least16_t, uint_least32_t, uint_least64_t
(Makro-Konstante)
UINTPTR_WIDTH
(C23)(optional)
Bitbreite eines Objekts vom Typ uintptr_t
(Makro-Konstante)
UINTMAX_WIDTH
(C23)
Bitbreite eines Objekts vom Typ uintmax_t
(Makro-Konstante)
Vorzeichenlose Ganzzahlen : Maximalwert
UINT8_MAXUINT16_MAXUINT32_MAXUINT64_MAX
Maximalwert eines Objekts vom Typ uint8_t, uint16_t, uint32_t, uint64_t
(Makro-Konstante)
UINT_FAST8_MAXUINT_FAST16_MAXUINT_FAST32_MAXUINT_FAST64_MAX
Maximalwert eines Objekts vom Typ uint_fast8_t, uint_fast16_t, uint_fast32_t, uint_fast64_t
(Makro-Konstante)
UINT_LEAST8_MAXUINT_LEAST16_MAXUINT_LEAST32_MAXUINT_LEAST64_MAX
Maximalwert eines Objekts vom Typ uint_least8_t, uint_least16_t, uint_least32_t, uint_least64_t
(Makro-Konstante)
UINTPTR_MAX
Maximalwert eines Objekts vom Typ uintptr_t
(Makro-Konstante)
UINTMAX_MAX
Maximalwert eines Objekts vom Typ uintmax_t
(Makro-Konstante)

[bearbeiten] Makros für Konstanten mit minimaler Breite

INT8_CINT16_CINT32_CINT64_C
ergibt einen ganzzahligen Ausdruck mit dem Wert, der durch das Argument angegeben ist, und dem Typ int_least8_t, int_least16_t, int_least32_t, int_least64_t
(Funktionsmakro)
INTMAX_C
ergibt einen ganzzahligen Ausdruck mit dem Wert, der durch das Argument angegeben ist, und dem Typ intmax_t
(Funktionsmakro)
UINT8_CUINT16_CUINT32_CUINT64_C
ergibt einen ganzzahligen Ausdruck mit dem Wert, der durch das Argument angegeben ist, und dem Typ uint_least8_t, uint_least16_t, uint_least32_t, uint_least64_t
(Funktionsmakro)
UINTMAX_C
ergibt einen ganzzahligen Ausdruck mit dem Wert, der durch das Argument angegeben ist, und dem Typ uintmax_t
(Funktionsmakro)
#include <stdint.h>
UINT64_C(0x123) // might expand to 0x123ULL or 0x123UL

[bearbeiten] Format-Makrokonstanten

Definiert in Header <inttypes.h>

[bearbeiten] Formatkonstanten für die fprintf-Familie von Funktionen

Jedes der hier aufgeführten PRI-Makros ist definiert, wenn und nur wenn die Implementierung den entsprechenden `typedef`-Namen definiert.

Äquivalent
für int oder
unsigned int
Beschreibung Makros für Datentypen




[u]intx_t




[u]int_leastx_t
[u]int_fastx_t
[u]intmax_t
[u]intptr_t
d Ausgabe eines vorzeichenbehafteten Dezimalganzzahlwerts PRIdx PRIdLEASTx PRIdFASTx PRIdMAX PRIdPTR
i PRIix PRIiLEASTx PRIiFASTx PRIiMAX PRIiPTR
u Ausgabe eines vorzeichenlosen Dezimalganzzahlwerts PRIux PRIuLEASTx PRIuFASTx PRIuMAX PRIuPTR
o Ausgabe eines vorzeichenlosen Oktalganzzahlwerts PRIox PRIoLEASTx PRIoFASTx PRIoMAX PRIoPTR
x Ausgabe eines vorzeichenlosen hexadezimalen Ganzzahlwerts mit Kleinbuchstaben PRIxx PRIxLEASTx PRIxFASTx PRIxMAX PRIxPTR
X Ausgabe eines vorzeichenlosen hexadezimalen Ganzzahlwerts mit Großbuchstaben PRIXx PRIXLEASTx PRIXFASTx PRIXMAX PRIXPTR

[bearbeiten] Formatkonstanten für die fscanf-Familie von Funktionen

Jedes der hier aufgeführten SCN-Makros ist definiert, wenn und nur wenn die Implementierung den entsprechenden `typedef`-Namen definiert und einen geeigneten Längenmodifikator für fscanf für den Typ hat.

Äquivalent
für int oder
unsigned int
Beschreibung Makros für Datentypen




[u]intx_t




[u]int_leastx_t
[u]int_fastx_t
[u]intmax_t
[u]intptr_t
d Eingabe eines vorzeichenbehafteten Dezimalganzzahlwerts SCNdx SCNdLEASTx SCNdFASTx SCNdMAX SCNdPTR
i Eingabe eines vorzeichenbehafteten Ganzzahlwerts (Basis wird durch die ersten gelesenen Zeichen bestimmt) SCNix SCNiLEASTx SCNiFASTx SCNiMAX SCNiPTR
u Eingabe eines vorzeichenlosen Dezimalganzzahlwerts SCNux SCNuLEASTx SCNuFASTx SCNuMAX SCNuPTR
o Eingabe eines vorzeichenlosen Oktalganzzahlwerts SCNox SCNoLEASTx SCNoFASTx SCNoMAX SCNoPTR
x Eingabe eines vorzeichenlosen hexadezimalen Ganzzahlwerts SCNxx SCNxLEASTx SCNxFASTx SCNxMAX SCNxPTR

[bearbeiten] Beispiel

Siehe auch C++ Kompatibilitätshinweis bezüglich Leerzeichen vor den Format-Makros, die in diesem Beispiel verwendet werden.

#include <inttypes.h>
#include <stdio.h>
 
int main(void)
{
    printf("%zu\n", sizeof(int64_t));
    printf("%s\n", PRId64);
    printf("%+" PRId64 "\n", INT64_MIN);
    printf("%+" PRId64 "\n", INT64_MAX);
 
    int64_t n = 7;
    printf("%+" PRId64 "\n", n);
}

Mögliche Ausgabe

8
lld
-9223372036854775808
+9223372036854775807
+7

[bearbeiten] Referenzen

  • C23-Standard (ISO/IEC 9899:2024)
  • 7.8.1 Makros für Format-Spezifizierer (S. TBD)
  • 7.18 Ganzzahltypen <stdint.h> (S. TBD)
  • C17-Standard (ISO/IEC 9899:2018)
  • 7.8.1 Makros für Format-Spezifizierer (S. 158-159)
  • 7.18 Ganzzahltypen <stdint.h> (S. 212-216)
  • C11-Standard (ISO/IEC 9899:2011)
  • 7.8.1 Makros für Format-Spezifizierer (S. 217-218)
  • 7.18 Ganzzahltypen <stdint.h> (S. 289-295)
  • C99-Standard (ISO/IEC 9899:1999)
  • 7.8.1 Makros für Format-Spezifizierer (S. 198-199)
  • 7.18 Ganzzahltypen <stdint.h> (S. 255-261)

[bearbeiten] Siehe auch

C++ Dokumentation für Ganzzahltypen mit fester Breite
C++ Dokumentation für Benutzerdefinierte Literale (Hinweis zu Format-Makros)