title: Difference between __int32 vs int vs int32_t (again)
body: <p>The answers around the web (<a href="https://stackoverflow.com/questions/14515874/difference-between-int32-int-int32-t-int8-and-int8-t">one</a>, <a href="https://softwareengineering.stackexchange.com/questions/288968/what-does-the-t-in-int32-t-signify">two</a>) only tell parts of the story, and omit some details that I would love you to help me to clarify:</p>
  <ul>
  <li>int, by the C++ standard, must be &gt;= 32 bits.</li>
  <li>Different compilers (implementations) can make <code>int</code> to allocate different amount of bits by default. So <code>Compiler A</code> can make <code>int</code> to allocate 50 bits (for example) when I declare integer.</li>
  <li>Also, different compilers may / may not use <a href="https://en.cppreference.com/w/cpp/types/integer" rel="nofollow noreferrer">bit padding</a> for optimization</li>
  <li><code>__int32</code> (Microsoft-specifc) and <code>int32_t</code> are here to solve the problem and:
  <ul>
  <li>Force compiler to allocate exactly 32 bits.</li>
  <li>Never use <a href="https://stackoverflow.com/questions/58435348/what-is-bit-padding-or-padding-bits-exactly">bit padding before / after</a> this data type.</li>
  </ul>
  </li>
  </ul>
  <p>Which one of my guesses are correct? Sorry to reasking old question, but I am actally confused in all of that allocation features.</p>
  <p>Thanks in advance for your time.</p>