title: Memory waste? If main() should only return 0 or 1, why is main declared with int and not short int or even char?
body: <p>For example:</p>
  
  <pre><code>#include &lt;stdio.h&gt; 
  int main (void)                         /* Why int and not short int? - Waste of Memory */ 
  {
       printf("Hello World!");
       return 0; 
  }
  </code></pre>
  
  <p>Why <code>main()</code> is conventional defined with <code>int</code> type, which allocates 4 bytes in memory on 32-bit, if it usually returns only 0 or 1, while other types such as <code>short int</code> (2 bytes,32-bit) or even <code>char</code> (1 byte,32-bit) would be more memory saving?</p>
  
  <p>It is wasting memory space.</p>
  
  <p>NOTE: The question is not a duplicate of the thread given; its answers only correspond to the return value itself but not its datatype at explicit focus.</p>
  
  <p>The Question is for C and C++. If the answers between those alter, share your wisdom with the mention of the context of which language in particular is focused.</p>