Fixed width integer types (since C++11)
Inhaltsverzeichnis |
Typen
|
Definiert im Header
<cstdint>
|
|
|
int8_t
int16_t
int32_t
int64_t
(optional)
|
vorzeichenbehafteter Ganzzahltyp mit exakter Breite von 8, 16, 32 bzw. 64 Bits
ohne Padding-Bits und unter Verwendung von 2er-Komplement für negative Werte (bereitgestellt genau dann, wenn die Implementierung den Typ direkt unterstützt) (typedef) |
|
int_fast8_t
int_fast16_t
int_fast32_t
int_fast64_t
|
schnellster vorzeichenbehafteter Ganzzahltyp mit mindestens 8, 16, 32 bzw. 64 Bits Breite
(typedef) |
|
int_least8_t
int_least16_t
int_least32_t
int_least64_t
|
kleinster vorzeichenbehafteter Ganzzahltyp mit mindestens 8, 16, 32 bzw. 64 Bits Breite
(typedef) |
|
intmax_t
|
vorzeichenbehafteter Ganzzahltyp mit maximaler Breite
(typedef) |
|
intptr_t
(optional)
|
vorzeichenbehafteter Ganzzahltyp, der in der Lage ist, einen Zeiger auf
void
zu halten
(typedef) |
|
uint8_t
uint16_t
uint32_t
uint64_t
(optional)
|
vorzeichenloser Ganzzahltyp mit exakter Breite von 8, 16, 32 bzw. 64 Bits
(bereitgestellt genau dann, wenn die Implementierung den Typ direkt unterstützt) (typedef) |
|
uint_fast8_t
uint_fast16_t
uint_fast32_t
uint_fast64_t
|
schnellster vorzeichenloser Ganzzahltyp mit mindestens 8, 16, 32 bzw. 64 Bits Breite
(typedef) |
|
uint_least8_t
uint_least16_t
uint_least32_t
uint_least64_t
|
kleinster vorzeichenloser Ganzzahltyp mit mindestens 8, 16, 32 bzw. 64 Bits Breite
(typedef) |
|
uintmax_t
|
vorzeichenloser Ganzzahltyp mit maximaler Breite
(typedef) |
|
uintptr_t
(optional)
|
vorzeichenloser Ganzzahltyp, der in der Lage ist, einen Zeiger auf
void
zu halten
(typedef) |
Die Implementierung kann Typedef-Namen definieren
int
N
_t
,
int_fast
N
_t
,
int_least
N
_t
,
uint
N
_t
,
uint_fast
N
_t
, und
uint_least
N
_t
, wenn
N
nicht 8, 16, 32 oder 64 ist. Typedef-Namen der Form
int
N
_t
dürfen nur definiert werden, wenn die Implementierung einen ganzzahligen Typ dieser Breite ohne Füllbits unterstützt. Somit bezeichnet
std::uint24_t
einen vorzeichenlosen ganzzahligen Typ mit einer exakten Breite von 24 Bits.
Jedes der unten aufgeführten Makros ist genau dann definiert, wenn die Implementierung den entsprechenden Typnamen definiert. Die Makros
INT
N
_C
und
UINT
N
_C
entsprechen jeweils den Typnamen
int_least
N
_t
und
uint_least
N
_t
.
Makro-Konstanten
|
Definiert im Header
<cstdint>
|
|
Vorzeichenbehaftete Ganzzahlen : Mindestwert |
|
|
INT8_MIN
INT16_MIN
INT32_MIN
INT64_MIN
(optional)
|
Mindestwert von
std::int8_t
,
std::int16_t
,
std::int32_t
und
std::int64_t
jeweils
(Makrokonstante) |
|
INT_FAST8_MIN
INT_FAST16_MIN
INT_FAST32_MIN
INT_FAST64_MIN
|
Mindestwert von
std::int_fast8_t
,
std::int_fast16_t
,
std::int_fast32_t
und
std::int_fast64_t
jeweils
(Makrokonstante) |
|
INT_LEAST8_MIN
INT_LEAST16_MIN
INT_LEAST32_MIN
INT_LEAST64_MIN
|
Mindestwert von
std::int_least8_t
,
std::int_least16_t
,
std::int_least32_t
und
std::int_least64_t
jeweils
(Makrokonstante) |
|
INTPTR_MIN
(optional)
|
Mindestwert von
std::intptr_t
(Makrokonstante) |
|
INTMAX_MIN
|
Mindestwert von
std::intmax_t
(Makrokonstante) |
Vorzeichenbehaftete Ganzzahlen : Maximalwert |
|
|
INT8_MAX
INT16_MAX
INT32_MAX
INT64_MAX
(optional)
|
Maximalwert von
std::int8_t
,
std::int16_t
,
std::int32_t
und
std::int64_t
jeweils
(Makrokonstante) |
|
INT_FAST8_MAX
INT_FAST16_MAX
INT_FAST32_MAX
INT_FAST64_MAX
|
Maximalwert von
std::int_fast8_t
,
std::int_fast16_t
,
std::int_fast32_t
und
std::int_fast64_t
jeweils
(Makrokonstante) |
|
INT_LEAST8_MAX
INT_LEAST16_MAX
INT_LEAST32_MAX
INT_LEAST64_MAX
|
Maximalwert von
std::int_least8_t
,
std::int_least16_t
,
std::int_least32_t
und
std::int_least64_t
jeweils
(Makrokonstante) |
|
INTPTR_MAX
(optional)
|
Maximalwert von
std::intptr_t
(Makrokonstante) |
|
INTMAX_MAX
|
Maximalwert von
std::intmax_t
(Makrokonstante) |
Vorzeichenlose Ganzzahlen : Maximalwert |
|
|
UINT8_MAX
UINT16_MAX
UINT32_MAX
UINT64_MAX
(optional)
|
Maximalwert von
std::uint8_t
,
std::uint16_t
,
std::uint32_t
und
std::uint64_t
jeweils
(Makrokonstante) |
|
UINT_FAST8_MAX
UINT_FAST16_MAX
UINT_FAST32_MAX
UINT_FAST64_MAX
|
Maximalwert von
std::uint_fast8_t
,
std::uint_fast16_t
,
std::uint_fast32_t
und
std::uint_fast64_t
jeweils
(Makrokonstante) |
|
UINT_LEAST8_MAX
UINT_LEAST16_MAX
UINT_LEAST32_MAX
UINT_LEAST64_MAX
|
Maximalwert von
std::uint_least8_t
,
std::uint_least16_t
,
std::uint_least32_t
und
std::uint_least64_t
jeweils
(Makrokonstante) |
|
UINTPTR_MAX
(optional)
|
Maximalwert von
std::uintptr_t
(Makrokonstante) |
|
UINTMAX_MAX
|
Maximalwert von
std::uintmax_t
(Makrokonstante) |
Funktionsmakros für Ganzzahlkonstanten mit Mindestbreite
|
INT8_C
INT16_C
INT32_C
INT64_C
|
erweitert sich zu einem ganzzahligen konstanten Ausdruck mit dem durch sein Argument spezifizierten Wert und dessen Typ der
heraufgestufte
Typ von
std::int_least8_t
,
std::int_least16_t
,
std::int_least32_t
bzw.
std::int_least64_t
ist
(Funktionsmakro) |
|
INTMAX_C
|
erweitert sich zu einem ganzzahligen konstanten Ausdruck mit dem durch sein Argument spezifizierten Wert und dem Typ
std::intmax_t
(Funktionsmakro) |
|
UINT8_C
UINT16_C
UINT32_C
UINT64_C
|
erweitert sich zu einem ganzzahligen konstanten Ausdruck mit dem durch sein Argument spezifizierten Wert und dessen Typ der
heraufgestufte
Typ von
std::uint_least8_t
,
std::uint_least16_t
,
std::uint_least32_t
bzw.
std::uint_least64_t
ist
(Funktionsmakro) |
|
UINTMAX_C
|
erweitert sich zu einem ganzzahligen konstanten Ausdruck mit dem durch sein Argument spezifizierten Wert und dem Typ
std::uintmax_t
(Funktionsmakro) |
#include <cstdint> UINT64_C(0x123) // erweitert zu einem Literal vom Typ uint_least64_t mit dem Wert 0x123
Format-Makrokonstanten
|
Definiert im Header
<cinttypes>
|
Formatkonstanten für die std::fprintf -Funktionsfamilie
Jedes der hier aufgeführten
PRI
Makros ist genau dann definiert, wenn die Implementierung den entsprechenden Typnamen definiert.
|
Äquivalent
für int oder unsigned int |
Beschreibung | Makros für Datentypen | ||||
|---|---|---|---|---|---|---|
std::int
x
_t
|
std::int_least
x
_t
|
std::int_fast
x
_t
|
std::intmax_t
|
std::intptr_t
|
||
d
|
Ausgabe eines vorzeichenbehafteten dezimalen Ganzzahlwerts | PRId x | PRIdLEAST x | PRIdFAST x | PRIdMAX | PRIdPTR |
i
|
PRIi x | PRIiLEAST x | PRIiFAST x | PRIiMAX | PRIiPTR | |
u
|
Ausgabe eines vorzeichenlosen dezimalen Ganzzahlwerts | PRIu x | PRIuLEAST x | PRIuFAST x | PRIuMAX | PRIuPTR |
o
|
Ausgabe eines vorzeichenlosen oktalen Ganzzahlwerts | PRIo x | PRIoLEAST x | PRIoFAST x | PRIoMAX | PRIoPTR |
x
|
Ausgabe eines vorzeichenlosen hexadezimalen Ganzzahlwerts in Kleinbuchstaben | PRIx x | PRIxLEAST x | PRIxFAST x | PRIxMAX | PRIxPTR |
X
|
Ausgabe eines vorzeichenlosen hexadezimalen Ganzzahlwerts in Großbuchstaben | PRIX x | PRIXLEAST x | PRIXFAST x | PRIXMAX | PRIXPTR |
Formatkonstanten für die std::fscanf -Funktionsfamilie
Jedes der hier aufgeführten
SCN
Makros ist genau dann definiert, wenn die Implementierung den entsprechenden Typnamen definiert und einen geeigneten
std::fscanf
Längenmodifikator für den Typ besitzt.
|
Äquivalent
für int oder unsigned int |
Beschreibung | Makros für Datentypen | ||||
|---|---|---|---|---|---|---|
std::int
x
_t
|
std::int_least
x
_t
|
std::int_fast
x
_t
|
std::intmax_t
|
std::intptr_t
|
||
d
|
Eingabe eines vorzeichenbehafteten dezimalen Ganzzahlwerts | SCNd x | SCNdLEAST x | SCNdFAST x | SCNdMAX | SCNdPTR |
i
|
Eingabe eines vorzeichenbehafteten Ganzzahlwerts | SCNi x | SCNiLEAST x | SCNiFAST x | SCNiMAX | SCNiPTR |
u
|
Eingabe eines vorzeichenlosen dezimalen Ganzzahlwerts | SCNu x | SCNuLEAST x | SCNuFAST x | SCNuMAX | SCNuPTR |
o
|
Eingabe eines vorzeichenlosen oktalen Ganzzahlwerts | SCNo x | SCNoLEAST x | SCNoFAST x | SCNoMAX | SCNoPTR |
x
|
Eingabe eines vorzeichenlosen hexadezimalen Ganzzahlwerts | SCNx x | SCNxLEAST x | SCNxFAST x | SCNxMAX | SCNxPTR |
Hinweise
Da C++ ein Zeichen unmittelbar nach einem String-Literal als ein
benutzerdefiniertes String-Literal
interpretiert, ist C-Code wie
printf
(
"%"
PRId64
"
\n
"
,n
)
;
ungültiges C++ und erfordert ein Leerzeichen vor
PRId64
.
Der C99-Standard empfiehlt, dass C++-Implementierungen die oben genannten Grenz-, Konstanten- oder Formatmakros nicht definieren sollten, es sei denn, die Makros
__STDC_LIMIT_MACROS
,
__STDC_CONSTANT_MACROS
oder
__STDC_FORMAT_MACROS
(jeweils) sind definiert, bevor der entsprechende C-Header (
stdint.h
oder
inttypes.h
) eingebunden wird. Diese Empfehlung wurde von keinem C++-Standard übernommen und in C11 entfernt. Allerdings versuchen einige Implementierungen (wie glibc 2.17), diese Regel anzuwenden, und es kann notwendig sein, die
__STDC
-Makros zu definieren; C++-Compiler können versuchen, dies zu umgehen, indem sie sie unter bestimmten Umständen automatisch definieren.
std::int8_t
kann
signed
char
sein und
std::uint8_t
kann
unsigned
char
sein, aber keiner von beiden kann
char
sein, unabhängig von dessen Vorzeichenbehaftung (da
char
nicht als "vorzeichenbehafteter Ganzzahltyp" oder "vorzeichenloser Ganzzahltyp" betrachtet wird).
Beispiel
Siehe auch den Hinweis bezüglich Leerzeichen vor Format-Makros , die in diesem Beispiel verwendet werden.
#include <cinttypes> #include <cstdio> int main() { std::printf("%zu\n", sizeof(std::int64_t)); std::printf("%s\n", PRId64); std::printf("%+" PRId64 "\n", INT64_MIN); std::printf("%+" PRId64 "\n", INT64_MAX); std::int64_t n = 7; std::printf("%+" PRId64 "\n", n); }
Mögliche Ausgabe:
8 lld -9223372036854775808 +9223372036854775807 +7
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 2820 | C++11 | die Anforderungen für optionale Typedef-Namen und Makros waren inkonsistent mit C | konsistent gemacht |
Referenzen
- C++23-Standard (ISO/IEC 14882:2024):
-
- 17.4.1 Header <cstdint> Synopsis [cstdint.syn]
-
- 31.13.2 Header <cinttypes> Synopsis [cinttypes.syn]
- C++20-Standard (ISO/IEC 14882:2020):
-
- 17.4 Integer-Typen [cstdint]
-
- 29.12.2 Header <cinttypes>-Synopsis [cinttypes.syn]
- C++17-Standard (ISO/IEC 14882:2017):
-
- 21.4 Integer-Typen [cstdint]
-
- 30.11.2 Header <cinttypes>-Synopsis [cinttypes.syn]
- C++14-Standard (ISO/IEC 14882:2014):
-
- 18.4 Ganzzahltypen [cstdint]
-
- 27.9.2 C-Bibliotheksdateien [c.files]
- C++11-Standard (ISO/IEC 14882:2011):
-
- 18.4 Ganzzahltypen [cstdint]
-
- 27.9.2 C-Bibliotheksdateien [c.files]
Siehe auch
|
C-Dokumentation
für
Fixed width integer types
|