Standard type sizes in C++

Please note that this is for informational purposes only. You should never assume anything based on the data you'll see here. I've just assembled it of pure curiosity, and there is no guarantee that your system will have the same numbers.

Platform gnu-toolchain ibm-xl
Arch alpha ia64 mips ppc s390 sh sparc x86 ppc
Type / ABI/variant ~ ~ n32 64 ~ ~x ~ ~ 32 64 32
Integer types
bool 1 1 1 1 1 1 1 1 1 1 1
char 7 7 7 8 8 8 7 7 7 7 8
signed char 7 7 7 7 7 7 7 7 7 7 7
unsigned char 8 8 8 8 8 8 8 8 8 8 8
signed short 15 15 15 15 15 15 15 15 15 15 15
unsigned short 16 16 16 16 16 16 16 16 16 16 16
signed int 31 31 31 31 31 31 31 31 31 31 31
unsigned int 32 32 32 32 32 32 32 32 32 32 32
signed long 63 63 31 63 31 63 31 31 31 63 31
unsigned long 64 64 32 64 32 64 32 32 32 64 32
signed long long 63 63 63 63 63 63 63 63 63 63 63
unsigned long long 64 64 64 64 64 64 64 64 64 64 64
__int128 -- -- -- 127 -- -- -- -- -- 127 63
Floating-point types
float (mantissa) 24 24 24 24 24 24 24 24 24 24 24
float 32 32 32 32 32 32 32 32 32 32 32
double (mantissa) 53 53 53 53 53 53 53 53 53 53 53
double 64 64 64 64 64 64 64 64 64 64 64
long double (mantissa) 113 64 113 106 113 113 53 113 64 64 106
long double 128 128 128 128 128 128 64 128 96 128 128
Pointer types
char* 64 64 32 64 32 64 32 32 32 64 32
int* 64 64 32 64 32 64 32 32 32 64 32
void* 64 64 32 64 32 64 32 32 32 64 32
Exact-width integers
int8_t 7 7 7 7 7 7 7 7 7 7 7
uint8_t 8 8 8 8 8 8 8 8 8 8 8
int16_t 15 15 15 15 15 15 15 15 15 15 15
uint16_t 16 16 16 16 16 16 16 16 16 16 16
int24_t -- -- -- -- -- -- -- -- -- -- --
uint24_t -- -- -- -- -- -- -- -- -- -- --
int32_t 31 31 31 31 31 31 31 31 31 31 31
uint32_t 32 32 32 32 32 32 32 32 32 32 32
int64_t 63 63 63 63 63 63 63 63 63 63 63
uint64_t 64 64 64 64 64 64 64 64 64 64 64
int128_t -- -- -- -- -- -- -- -- -- -- --
uint128_t -- -- -- -- -- -- -- -- -- -- --
intptr_t 63 63 31 63 31 63 31 31 31 63 31
uintptr_t 64 64 32 64 32 64 32 32 32 64 32
intmax_t 63 63 63 63 63 63 63 63 63 63 63
uintmax_t 64 64 64 64 64 64 64 64 64 64 64
Least-width integers
int_least8_t 7 7 7 7 7 7 7 7 7 7 7
uint_least8_t 8 8 8 8 8 8 8 8 8 8 8
int_least16_t 15 15 15 15 15 15 15 15 15 15 15
uint_least16_t 16 16 16 16 16 16 16 16 16 16 16
int_least24_t -- -- -- -- -- -- -- -- -- -- --
uint_least24_t -- -- -- -- -- -- -- -- -- -- --
int_least32_t 31 31 31 31 31 31 31 31 31 31 31
uint_least32_t 32 32 32 32 32 32 32 32 32 32 32
int_least64_t 63 63 63 63 63 63 63 63 63 63 63
uint_least64_t 64 64 64 64 64 64 64 64 64 64 64
int_least128_t -- -- -- -- -- -- -- -- -- -- --
uint_least128_t -- -- -- -- -- -- -- -- -- -- --
Fast least-width integers
int_fast8_t 7 7 7 7 7 7 7 7 7 7 7
uint_fast8_t 8 8 8 8 8 8 8 8 8 8 8
int_fast16_t 63 63 31 63 31 63 31 31 31 63 31
uint_fast16_t 64 64 32 64 32 64 32 32 32 64 32
int_fast24_t -- -- -- -- -- -- -- -- -- -- --
uint_fast24_t -- -- -- -- -- -- -- -- -- -- --
int_fast32_t 63 63 31 63 31 63 31 31 31 63 31
uint_fast32_t 64 64 32 64 32 64 32 32 32 64 32
int_fast64_t 63 63 63 63 63 63 63 63 63 63 63
uint_fast64_t 64 64 64 64 64 64 64 64 64 64 64
int_fast128_t -- -- -- -- -- -- -- -- -- -- --
uint_fast128_t -- -- -- -- -- -- -- -- -- -- --