Why does this not give error ? int i = l; long l = 10l; int j = i << l; Should not the RHS expression be promoted to long and throw a casting error ? int j = l; // this throws error !
Sahir Shah
Ranch Hand
Joined: Nov 05, 2000
Posts: 158
posted
0
???
[This message has been edited by Sahir Shah (edited December 06, 2000).]
....
Aru Ven
Ranch Hand
Joined: Sep 28, 2000
Posts: 199
posted
0
Bharatesh, in ur code u r assigning "l"(L) to int i. Make it 1 or whatever number u want & everything will be fine.
Aruna [This message has been edited by Aru Ven (edited December 06, 2000).]
Jane Griscti
Ranch Hand
Joined: Aug 30, 2000
Posts: 3141
posted
0
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.
Jane Griscti
Ranch Hand
Joined: Aug 30, 2000
Posts: 3141
posted
0
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
I agree. Here's the link: http://ej-technologies/jprofiler - if it wasn't for jprofiler, we would need to
run our stuff on 16 servers instead of 3.