Velocity Reviews > C++ > order of operations with division and multiplication

# order of operations with division and multiplication

Tim923
Guest
Posts: n/a

 04-08-2005
The following lines were tried:

x1 = (-b + sqrt(pow(b,2)-(4*a*c))) /(2*a);

x1 = (-b + sqrt(pow(b,2)-(4*a*c))) / 2*a;

I noticed that the last parentheses were optional and didn't change
anything.
Although if I mean 1/(2*5)=0.1 then 1/2*5=2.5 is not the same. What
is the difference?

Pete Becker
Guest
Posts: n/a

 04-08-2005
Tim923 wrote:
> The following lines were tried:
>
> x1 = (-b + sqrt(pow(b,2)-(4*a*c))) /(2*a);
>
> x1 = (-b + sqrt(pow(b,2)-(4*a*c))) / 2*a;
>
>
> I noticed that the last parentheses were optional and didn't change
> anything.
> Although if I mean 1/(2*5)=0.1 then 1/2*5=2.5 is not the same. What
> is the difference?
>

It's not order, but grouping. That is, you have to be sure that each
operation gets applied to the correct operands. Generally speaking, math
operators group from left to right, so a/b*c says that a should be
divided by b, and the result multiplied by c. To change this grouping,

--

Pete Becker
Dinkumware, Ltd. (http://www.dinkumware.com)

Evan
Guest
Posts: n/a

 04-08-2005
It should matter, and does for me. Sure you tried it with something
other than a=1?

marbac
Guest
Posts: n/a

 04-08-2005
Tim923 wrote:

> Although if I mean 1/(2*5)=0.1 then 1/2*5=2.5 is not the same. What
> is the difference?
>

The Rank of both operators / and * is the same in the second example,
but the associativity in this case is from left to right. That means
that operator 1/2 is calculated first, after this 1/2 is multiplied by 5.

Due to higher Rank of "()" 2*5 is calculated before the division in the
first example.

Tim923
Guest
Posts: n/a

 04-08-2005
Evan wrote:
>It should matter, and does for me. Sure you tried it with something
>other than a=1?

That's it. I think a was 1.