> Using the compiler option 4-byte integer, a short will have, always, 2 bytes?
No, this is an architecture dependent.
But, sizeof(short int) is 2 bytes for all known to me 32-bit architectures.
> I can't understand exactly the definitions of uint32, uint16... and how the compiler handles them.
Regularly, UINT32 has the range from 0 to 2^31-1.
Regularly, UINT16 has the range from 0 to 2^15-1.