This week's book giveaway is in the OO, Patterns, UML and Refactoring forum.
We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line!
See this thread for details.
The moose likes Beginning Java and the fly likes Why this raises ab error? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Why this raises ab error?" Watch "Why this raises ab error?" New topic

Why this raises ab error?

Brian Smith
Ranch Hand

Joined: Oct 26, 2002
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
int c = a + b; //okay
Paul Morano

Joined: Jun 18, 2003
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

Joined: Dec 10, 2001
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 ]

    [How To Ask Good Questions] [JavaRanch FAQ Wiki] [JavaRanch Radio]
    Have you checked out Aspose?
    subject: Why this raises ab error?
    It's not a secret anymore!