They should do what the C standard did to solve this problem.
A C int is generally of whatever size the architecture is most easily capable of manipulating. On nearly all modern architectures, this is four bytes, but this is not mandatory. On certain embedded systems, I've seen two (and even three, on a 24-bit DSP) byte integers.
The long type (or, in C99, the int32_t type), however, is always 32 bits or four bytes, and that's why both long and int are valuable as distinct types.