• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Basic arithmetic problem.

 
Tommaso Nuccio
Ranch Hand
Posts: 66
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi there,

I have a problem to understand this:


the output is 14.

Now my problem here is that LINE 1 can be written as
c = c * a + b
Here now "*" has a higher priority as "+"
and the result must be
c = (2 * 3) + 4
c = 10

Why is it 14?

Or does
c *= a + b;
c = c * a + c * b;
c = c * (a + b);
?

Thanks in advance.
 
Srikanth CS
Greenhorn
Posts: 9
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
the compund assignment operators have the lowest precedence of all the operators in javal allowin the expression on the right -hand side to be evaluated before the assignment
so c * = a+b;
will be x =((c)*(a+b))
 
Keith Lynn
Ranch Hand
Posts: 2399
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
This is from the Java Language Specification 15.26.2.

A compound assignment expression of the form E1 op = E2 is equivalent to
E1 = (T )((E1) op (E2)), where T is the type of E1, except that E1 is evaluated only once.
 
Tommaso Nuccio
Ranch Hand
Posts: 66
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
When I compiled I got 14, but I always thought it is the other way!!

That's ok, now I know it BEFORE the exam.

Thank you very much.
 
Meena R. Krishnan
Ranch Hand
Posts: 178
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
c = c * a + b; returns 46. Any thoughts?
 
Keith Lynn
Ranch Hand
Posts: 2399
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
If c is 14, then c*a + b is 14*3 + 4 = 42 + 4 = 46.
 
Meena R. Krishnan
Ranch Hand
Posts: 178
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Oh yes. I didn't realize that I had a line above this line where c gets assigned to 14. Thanks.
 
It is sorta covered in the JavaRanch Style Guide.
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic