This week's giveaway is in the Android forum.
We're giving away four copies of Android Security Essentials Live Lessons and have Godfrey Nolan on-line!
See this thread for details.
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Conversion between char and short ? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Conversion between char and short ?" Watch "Conversion between char and short ?" New topic
Author

Conversion between char and short ?

Ramana Uppala
Greenhorn

Joined: Jan 04, 2005
Posts: 16
The below assignment causes compile time error

short a=10;
char c=a;

as both char and short are of 16-bits why implicit conversion is not done here?
I know that char variables are unsigned and short variables are signed.
Can any one explain me the problem clearly?
Animesh Shrivastava
Ranch Hand

Joined: Jul 19, 2004
Posts: 298
Ramana,

According to JLS 5.2 Assignment Conversion here

In addition, a narrowing primitive conversion may be used if all of the following conditions are satisfied:

The expression is a constant expression of type byte, short, char or int.
The type of the variable is byte, short, or char.
The value of the expression (which is known at compile time, because it is a constant expression) is representable in the type of the variable.



The first point gives ur solution.

short a=10;
char c=a;

since a is not a constant expression, thats why the compiler flags an error.

Try this:
final short a=10;
char c=a;

This works fine.
Hope it makes u clear
Mike Gershman
Ranch Hand

Joined: Mar 13, 2004
Posts: 1272
as both char and short are of 16-bits why implicit conversion is not done here?
I know that char variables are unsigned and short variables are signed.
Can any one explain me the problem clearly?


While both char and short are 16 bits long, a short can be negative while a char cannot be negative,

If a == -5, what should "c=a" do?

As Animesh points out, if "a" is a final nonnegative number, there is no risk of "a" not fitting into "c".


Mike Gershman
SCJP 1.4, SCWCD in process
Tony Morris
Ranch Hand

Joined: Sep 24, 2003
Posts: 1608

As Animesh points out, if "a" is a final nonnegative number...


Animesh points out that if "a" is a compile-time constant (...), not a final.
I made the distinction clear in another thread just 24 hours ago.


Tony Morris
Java Q&A (FAQ, Trivia)
 
Don't get me started about those stupid light bulbs.
 
subject: Conversion between char and short ?
 
Similar Threads
Reg. conversion rules
How does this work
byte to int ?
conversion
narrowing