Never use fixed-size integers unless you are communicating with hardware, implementing some protocol or manipulating binary files.<p>If some code shared between 8/16-bit and 32/64-bit architectures requires an a least 16-bit type, go for "int". If it requires an at least 32-bit type, go for "long".<p>Also fixed-size integers shall not be printed with standard directives like %d or %u, but the PRId32, PRIu32, PRIx32, etc... macros shall be used from inttypes.h.