title: printf too smart casting from char to int?
body: <p>Why does the following call:</p>
  
  <pre><code>printf("%d %d", 'a', 'b');
  </code></pre>
  
  <p>result in the "correct" <code>97 98</code> values?
  %d indicates the function has to read 4 bytes of data, and printf shouldn't be able to tell the type of the received arguments (besides the format string), so why isn't the printed number <code>|a||b||junk||junk|</code>?</p>
  
  <p>Thanks in advance.</p>