Granny's Programming Pearls "inside of every large program is a small program struggling to get out" JavaRanch.com/granny.jsp
Big Moose Saloon
 Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies Register / Login

# Basic arithmetic problem.

Tommaso Nuccio
Ranch Hand

Joined: Dec 11, 2006
Posts: 66
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);
?

Ciao,<br /> Tommaso<br /> <br />~*~*~*~<br />There are 10 types of people, those who understand binary and those who don't.
Srikanth CS
Greenhorn

Joined: Apr 10, 2007
Posts: 9
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

Joined: Feb 07, 2005
Posts: 2398
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

Joined: Dec 11, 2006
Posts: 66
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

Joined: Aug 13, 2006
Posts: 178
c = c * a + b; returns 46. Any thoughts?
Keith Lynn
Ranch Hand

Joined: Feb 07, 2005
Posts: 2398
If c is 14, then c*a + b is 14*3 + 4 = 42 + 4 = 46.
Meena R. Krishnan
Ranch Hand

Joined: Aug 13, 2006
Posts: 178
Oh yes. I didn't realize that I had a line above this line where c gets assigned to 14. Thanks.

I agree. Here's the link: http://aspose.com/file-tools

subject: Basic arithmetic problem.