title: Implicit types for numbers in C
body: <p>What are the implicit types for numbers in C? If, for example, I have a decimal number in a calculation, is the decimal always treated as a double? If I have a non-decimal number, is it always treated as an int? What if my non-decimal number is larger than an int value?</p>
  
  <p>I'm curious because this affects type conversion and promotion. For instance, if I have the following calculation:</p>
  
  <pre><code>float a = 1.0 / 25;
  </code></pre>
  
  <p>Is <code>1.0</code> treated as a double and <code>25</code> treated as an int? Is <code>25</code> then promoted to a double, the calculation performed at double precision and then the result converted to a float?</p>
  
  <p>What about:</p>
  
  <pre><code>double b = 1 + 2147483649;   // note that the number is larger than an int value
  </code></pre>