| Author |
Binary numeric promotion
|
Harwinder Bhatia
Ranch Hand
Joined: Oct 17, 2003
Posts: 150
|
|
How does char primitiveChar = 'b'-'a'; work? Why isn't binary numeric promotion being applied to ('b' - 'a') and the result not an integer? I know I'm missing something here. Thanks Harwinder
|
 |
Marlene Miller
Ranch Hand
Joined: Mar 05, 2003
Posts: 1391
|
|
Hi Harwinder, You are correct, binary promotion does occur. The type of 'b' - 'a' is int. Since 'b' and 'a' are literals, 'b' - 'a' is a constant expression. A constant expression of type int can be assigned to a char without casting.
|
 |
Marlene Miller
Ranch Hand
Joined: Mar 05, 2003
Posts: 1391
|
|
Here is a way to prove that 'b'-'a' is of type int.
|
 |
Lakshmi Saradha
Ranch Hand
Joined: Oct 21, 2003
Posts: 170
|
|
Hi Harwinder, The result is an integer. public class a { public static void main(String args[]) { char a = 'b' - 'a'; System.out.println(a); } } In the above mentioned code, it prints a character corresponding to the value 1(since 'b'-'a' will lead to 1).
|
Thanks,<br />Lakshmi.
|
 |
Marlene Miller
Ranch Hand
Joined: Mar 05, 2003
Posts: 1391
|
|
char a = 'b' - 'a'; 'b' and 'a' are literals of type char. When the expression 'b'-'a' is evaluated, 'b' and 'a' are promoted to type int. The result of the expression 'b'-'a' is of type int. When the = operation is performed, the value of the expression 'b'-'a' is converted to type char. The variable a holds a value of type char. [ December 11, 2003: Message edited by: Marlene Miller ]
|
 |
Sagarika nair
Ranch Hand
Joined: Aug 13, 2003
Posts: 39
|
|
A constant expression of type int can be assigned to a char without casting. The above statement is true only if the integer value doesn't exceed 65535 right?Please correct me if I am wrong.
|
 |
Marlene Miller
Ranch Hand
Joined: Mar 05, 2003
Posts: 1391
|
|
Whoops, I am getting sloppy. Thank you Sagarika for making the explanation better. The value of the constant expression must be representable in the type of the variable. [ December 11, 2003: Message edited by: Marlene Miller ]
|
 |
 |
|
|
subject: Binary numeric promotion
|
|
|