This should be updated for ISO C23's _BitInt(N), which is <i>not</i> equivalent to intN_t (the type promotion rules differ!)<p>(It also supports "uncommon" values of N)
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.
FYI, there was a semi-related discussion on architectures and bit widths on HN a couple months ago: <a href="https://news.ycombinator.com/item?id=41773559">https://news.ycombinator.com/item?id=41773559</a>