---
name: "intmax_t"
section: "3type"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/intmax_t/3type"
---

# intmax\_t(3type)

greatest-width basic integer types

## NAME

intmax\_t, uintmax\_t - greatest-width basic integer types

## LIBRARY

Standard C library (*libc*)

## SYNOPSIS

```
#include <stdint.h>
```

**typedef** /\* ... \*/ **intmax\_t;** **typedef** /\* ... \*/ **uintmax\_t;**

**#define INTMAX\_WIDTH**  /\* ... \*/ **#define UINTMAX\_WIDTH INTMAX\_WIDTH**

**#define INTMAX\_MAX**    /\*  2\*\*(INTMAX\_WIDTH - 1) - 1  \*/ **#define INTMAX\_MIN**    /\*  - 2\*\*(INTMAX\_WIDTH - 1)    \*/ **#define UINTMAX\_MAX**   /\*  2\*\*UINTMAX\_WIDTH - 1       \*/

**#define INTMAX\_C(***c***)**   *c* **##** */\* ... \*/* **#define UINTMAX\_C(***c***)**  *c* **##** */\* ... \*/*

## DESCRIPTION

*intmax\_t* is a signed integer type capable of representing any value of any basic signed integer type supported by the implementation. It is capable of storing values in the range \[**INTMAX\_MIN**, **INTMAX\_MAX**\].

*uintmax\_t* is an unsigned integer type capable of representing any value of any basic unsigned integer type supported by the implementation. It is capable of storing values in the range \[**0**, **UINTMAX\_MAX**\].

The macros \[**U**\]**INTMAX\_WIDTH** expand to the width in bits of these types.

The macros \[**U**\]**INTMAX\_MAX** expand to the maximum value that these types can hold.

The macro **INTMAX\_MIN** expands to the minimum value that *intmax\_t* can hold.

The macros \[**U**\]**INTMAX\_C**() expand their argument to an integer constant of type \[*u*\]*intmax\_t*.

The length modifier for \[*u*\]*intmax\_t* for the [**printf**(3)](/printf/3.md) and the [**scanf**(3)](/scanf/3.md) families of functions is **j**; resulting commonly in **%jd**, **%ji**, **%ju**, or **%jx** for printing \[*u*\]*intmax\_t* values.

## STANDARDS

C11, POSIX.1-2024.

## HISTORY

C99, POSIX.1-2001.

## NOTES

The following header also provides these types: *\<inttypes.h\>*.

## BUGS

These types may not be as large as extended integer types, such as *\_\_int128*

## SEE ALSO

[**int64\_t**(3type)](/int64_t/3type.md), [**intptr\_t**(3type)](/intptr_t/3type.md), [**printf**(3)](/printf/3.md), [**strtoimax**(3)](/strtoimax/3.md)
