The C standard represents an object of type int, "with the natural size suggested by the execution environment architecture". For 64-bit systems, this means that INT_MAX should be 2 63-1-but this is not a mandatory requirement.
The requirement is that int should be at least 16 bits wide, and at least as wide as short, not as wide as long. (POSIX requires int to be at least 32 bits. )
It is useful to provide integer types for all sizes supported by the system. In particular, in most modern systems, predefined integer types with sizes of 8, 16, 32 and 64 bits are very useful.
Char is usually 8 bits. If we make int 64-bit, then either short is 16-bit, and we have no 32-bit type, or short is 32-bit, and we have no 16-bit type. (I have also studied systems without 16 or 32-bit integer types. )
Compilers can solve this problem by defining their own extended integer types, but compilers usually don't do this.
In fact, it's not a real problem for int to do 32-bit on a 64-bit system. It is valid to operate on 32-bit integers. If you want to have a 64-bit integer, you can define it with long, long long or int 64 _ t.