aspose file tools*
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Binary numeric promotion Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Spring in Action this week in the Spring forum!
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Binary numeric promotion" Watch "Binary numeric promotion" New topic
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 ]
 
wood burning stoves
 
subject: Binary numeric promotion