Win a copy of Mesos in Action this week in the Cloud/Virtualizaton forum!

# Why this raises ab error?

Brian Smith
Ranch Hand
Posts: 232
hi folks,
why this is a problem?
short a, b, c;
b = 3;
b = 1;
c = a + b; //raises an error Why?
c = (short) a + b; //okay
or
int c = a + b; //okay
thanks.

Paul Morano
Greenhorn
Posts: 7
I believe it is because the addition promotes the shorts to int's. Or, the result of the addition is an int. I forget which.

Dirk Schreckmann
Sheriff
Posts: 7023
The addition promotes the operands to ints is correct, sir!
From The JLS (�5.6.2):
When an operator applies binary numeric promotion to a pair of operands, each of which must denote a value of a numeric type, the following rules apply, in order, using widening conversion (�5.1.2) to convert operands as necessary:
• If either operand is of type double, the other is converted to double.
• Otherwise, if either operand is of type float, the other is converted to float.
• Otherwise, if either operand is of type long, the other is converted to long.
• Otherwise, both operands are converted to type int.

• [ June 22, 2003: Message edited by: Dirk Schreckmann ]