What is the difference between the int types int8_t, int_least8_t and int_fast8_t?
intN_t (and uintN_t) is not required in all C99 implementations. These types are the "exact-width integer types". They are required in implementations where it makes sense to have them (basically every desktop computer).
int_leastN_t is required in all C99 implementation for values of N of 8, 16, 32, and 64. This is the "minimum-width integer types".
int_fastN_t is required in all C99 implementation for values of N of 8, 16, 32, and 64. This is the "fastest minimum-width integer types".