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?
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.
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".