title: Way to round up number to an int size boundary number of bytes
body: <p>The following code rounds up the argument to an int size boundary number of bytes.</p>
  
  <pre><code>  #define _INTSIZE(n) ((sizeof(n) + sizeof(int) - 1) &amp; ~(sizeof(int) - 1))
  </code></pre>
  
  <p>On my machine int is 4 bytes, so -- correct me if I'm wrong -- this should be the same as looking for the next multiple of 4 of an integer (on my machine). By next multiple of 4, I mean the number should be rounded up to a multiple of 4 if not a multiple of 4. If already a multiple of 4, it should be left alone. </p>
  
  <p>I've been playing around with this code. The long and short of it is: <strong>why does this code work?</strong> (Maybe it doesn't, but it seems to.) I would like some reason to think it will work for ALL cases, not just the ones I've tried out. </p>