 <p><code>whatever</code> is a char, and <code>++whatever</code> means <code>whatever = whatever + 1</code> (ignoring prefix order)</p> <p>since there is an assignment involved, result is converted to char, so the char method is called. But in 3-4th print, there is no assignment, and as per rule, all the sum operation are by default happens in int. So before print operation, it sums up the <code>char + char</code> and <code>char+int</code>, and since there is no back assignment, it remains as int after the opration, so the integer method is called.</p>