The short answer is compatibility if you have ever moved your code from one architecture to another.
int_fast8_t is likely to be the same as int , since in most (many? some?) architectures, the int type is defined as the size of the native word (32 bits for a 32-bit architecture, 64 bits in a 64-bit architecture). Basically, int_fast8_t says that if I interpret correctly, the base type will be the fastest, which can contain at least 8 bits of information.
If you move your code to a different architecture, you can be sure that you will still have at least 8 bits if you use int_fast8_t . You cannot be sure of this if you just use int .
source share