aspose file tools*
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Primitive Casting Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Primitive Casting" Watch "Primitive Casting" New topic
Author

Primitive Casting

Bharatesh H Kakamari
Ranch Hand

Joined: Nov 09, 2000
Posts: 198
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
???


[This message has been edited by Sahir Shah (edited December 06, 2000).]


....
Aru Ven
Ranch Hand

Joined: Sep 28, 2000
Posts: 199
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
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


Jane Griscti
SCJP, Co-author Mike Meyers' Java 2 Certification Passport
Bharatesh H Kakamari
Ranch Hand

Joined: Nov 09, 2000
Posts: 198
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
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
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: Primitive Casting