&gt;&gt; [u]intN_t may not exist.<p>It will, that&#x27;s guaranteed by the standard. If it&#x27;s not a standards compliant compiler&#x2F;runtime&#x2F;platform, you&#x27;ve got bigger problems.<p>&gt;&gt; If you are working with arrays, always use size_t if not, use [u]int_leastN_t<p>Sure, on array indices, size_t is appropriate.<p>I can&#x27;t see an advantage in using &#x27;least&#x27; as standards dictate that 8&#x2F;16&#x2F;32&#x2F;64 bit types are available.<p>&gt;&gt; in 99% of the cases, except if you are working with network protocols, [u]intN_t is a bad choice<p>No, it&#x27;s the best choice in most cases because it makes the code a little more explicit and easier to understand, and it makes developers think about the range of the data you&#x27;re using.