header

<cinttypes> (inttypes.h)

C integer types
Header with library support for width-based integral types.

Including this header automatically includes also <cstdint> (which defines width-based integral types).

Macros

The following macros expand to character string literals that contain a printf or scanf specifier suitable to be used with specific width-based integral types:
macrodescriptionexample
PRIxMAXprintf specifier for intmax_tPRIiMAX is the equivalent of i (in "%i") for intmax_t values
PRIxNprintf specifier for intN_tPRId16 is the equivalent of d (in "%d") for int16_t values
PRIxLEASTNprintf specifier for int_leastN_tPRIuLEAST32 is the equivalent of u (in "%u") for uint32_t values
PRIxFASTNprintf specifier for int_fastN_tPRIxFAST8 is the equivalent of x (in "%x") for uint8_t values
PRIxPTRprintf specifier for intptr_tPRIuPTR is the equivalent of u (in "%u") for uintptr_t values
SCNxMAXscanf specifier for intmax_tSCNiMAX is the equivalent of i (in "%i") for intmax_t values
SCNxNscanf specifier for intN_tSCNd16 is the equivalent of d (in "%d") for int16_t values
SCNxLEASTNscanf specifier for int_leastN_tSCNuLEAST32 is the equivalent of u (in "%u") for uint32_t values
SCNxFASTNscanf specifier for int_fastN_tSCNxFAST8 is the equivalent of x (in "%x") for uint8_t values
SCNxPTRscanf specifier for intptr_tSCNuPTR is the equivalent of u (in "%u") for uintptr_t values
Where:
  • x is one of d, i, o,u or x (for the printf specifiers this can also be an uppercase X).*
  • N is 8, 16, 32, 64, or any other type width supported by the library in <cstdint>.
* The specifier assumes the type to be signed for i and d, and unsigned for o, u, x and X.

Functions

This header also declares the following functions, that adapt functions in <cstdlib> and <cwchar> for intmax_t:
functiondescription
imaxabsequivalent to abs for intmax_t:
intmax_t imaxabs (intmax_t n);
imaxdivequivalent to div for intmax_t:
imaxdiv_t imaxdiv (intmax_t numer, intmax_t denom);
strtoimaxequivalent to strtol for intmax_t:
intmax_t strtoimax (const char* str, char** endptr, int base);
strtoumaxequivalent to strtoul for uintmax_t:
uintmax_t strtoumax (const char* str, char** endptr, int base);
wcstoimaxequivalent to wcstol for intmax_t:
intmax_t wcstoimax (const wchar_t* wcs, wchar_t** endptr, int base);
wcstoumaxequivalent to wcstoul for uintmax_t:
uintmax_t wcstoumax (const wchar_t* wcs, wchar_t** endptr, int base);

In C++, including this header also provides overloads of abs and div for intmax_t (equivalent to the functions above) unless intmax_t is an alias of a fundamental type.

Types

Typedescription
imaxdiv_tType returned by imaxdiv, which is the div_t equivalent for intmax_t.

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/* example of <inttypes.h> */ #include <stdio.h> /* printf, scanf, fgets, stdin, NULL */ #include <stdint.h> /* intmax_t */ #include <inttypes.h> /* strtoimax, PRIdMAX, SCNdMAX */ int main () { char buffer[80]; intmax_t foo,bar; printf ("Please, enter a number: "); fgets (buffer,80,stdin); foo = strtoimax (buffer,NULL,10); printf ("Thanks for entering %" PRIdMAX ".\n", foo); printf ("Please, enter another number: "); scanf ("%" SCNdMAX,&bar); printf ("%" PRIdMAX " by %" PRIdMAX " is %" PRIdMAX, foo, bar, foo*bar); return 0; }

Possible output:
 Please, enter a number: 10 Thanks for entering 10. Please, enter another number: 20 10 by 20 is 200