title: What is the difference between these two defines
body: <p>In the following, what is the difference between MY_INT2 and MY_INT3 declarations?
  I have a fairly entrenched issue in some code so reducing the code that generates bugs into a test case would be rather challenging.</p>
  
  <pre><code>#define MY_INT1 5
  #define MY_INT2 31
  #define MY_INT3 (int) pow(2, MY_INT1)-1
  </code></pre>
  
  <p>I'm getting issues in my code which are resolved by using the following, which feels very unnecessary </p>
  
  <pre><code>int mul(int a, int b) {
      return a*b;
  }
  
  int someFunction(int in) {
       //nice
       return floor(in/MY_INT2);
  }
  
  int someFunction2(int in) {
       //silly
       return floor(in/mul(1,MY_INT3));
  }
  
  int someFunction3(int in) {
       //cast does not solve the issue
       return floor(in/(int)MY_INT3);
  }
  </code></pre>