Hi Bharatesh, Shift operators are subject to unary numeric promotion not binary; so <code>long</code> values do not force conversion of <code>int</code> values. See JLS §5.6.1 <quote> Each operand, separately, of a shift operator >>, >>>, or << (�15.19); therefore a long shift distance (right operand) does not promote the value being shifted (left operand) to long </quote> Hope that helps. ------------------ Jane The cure for boredom is curiosity. There is no cure for curiosity. -- Dorothy Parker
What about the following : int i = l; long l = 10l; double d = 10.0; int j = i << l; int k = i << d; // this is throwing error ? Even in the above the last line should not throw error.
Joined: Aug 30, 2000
Hi Bharatesh, Sorry for the late reply. The line <code>int k = i << d</code> is throwing an error because 'd' is a 'double'. Shift operators don't work with floating-poing values. Hope that helps. ------------------ Jane The cure for boredom is curiosity. There is no cure for curiosity. -- Dorothy Parker