title: Why is the condition in this if statement written as a multiplication instead of the value of the multiplication?
body: <p>I was reviewing some code from a library for Arduino and saw the following if statement in the main loop:</p>
  
  <pre><code>draw_state++;
  if ( draw_state &gt;= 14*8 )
      draw_state = 0;
  </code></pre>
  
  <p><code>draw_state</code> is a <code>uint8_t</code>.
  Why is <code>14*8</code> written here instead of 112? I initially thought this was done to save space, as 14 and 8 can both be represented by a single byte, but then so can 112. </p>
  
  <p>I can't see why a compiler wouldn't optimize this to 112, since otherwise it would mean a multiplication has to be done every iteration instead of the lookup of a value. This looks to me like there is some form of memory and processing tradeoff.</p>
  
  <p>Does anyone have a suggestion as to why this was done?</p>
  
  <hr>
  
  <p>Note: I had a hard time coming up with a clear title, so suggestions are welcome.</p>