The difference is defined in the sections of the C99 standard that Carl Norum quoted. But it may be useful to have an example.
Suppose you have a C compiler for a 36-bit system, with char
= 9 bits, short
= 18 bits, int
= 36 bits, and long
= 72 bits. Then
int8_t
does not exist, because there is no way to satisfy the constraint of having exactly 8 value bits with no padding.
int_least8_t
is a typedef of char
. NOT of short
or int
, because the standard requires the smallest type with at least 8 bits.
int_fast8_t
can be anything. It's likely to be a typedef of int
if the "native" size is considered to be "fast".
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…