As I understand it, the C specification says that type int is supposed to be the most efficient type on target platform that contains at least 16 bits.
I
int_fast16_t is guaranteed to be the fastest int with a size of at least 16 bits. int has no guarantee of its size except that:
sizeof(char) = 1 and sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long).
And that it can hold the range of -32767 to +32767.
(7.20.1.3p2) "The typedef name
int_fastN_tdesignates the fastest signed integer type with a width of at least N. The typedef nameuint_fastN_tdesignates the fastest unsigned integer type with a width of at least N."