• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 233
  • Last Modified:

why is ( X = 25%3/3.0 ) is 0.3333333. which operator takes precedence?

why is it that, (25%3/3.0) is  0.333333

which operator takes precedence?
0
Emmatee1
Asked:
Emmatee1
  • 5
  • 2
1 Solution
 
jazzIIIloveCommented:
1) ()
2) / % same order, so left to right
3) = it is right to left

suppose, we miswrite:
double x = (25/3%3.0);
or
int x = (25/3%3.0);

You got this:
'%' : illegal, right operand has type 'const double'

i think, it's clear...

Best regards...
0
 
jazzIIIloveCommented:
high to low order:
1)...
2)...
3)...
0
 
josgoodCommented:
% and / have the same precedence
See http://www.cppreference.com/wiki/operator_precedence, for example

Since they have the same precedence, they have left-to-right associativity.

So 25 % 3 = 1.0 is evaluated first.
Then 1.0 / 3.0
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
DrunkenELFCommented:

Dear emmatee,

[/] Division has precedence than modulus [%]

FYI...
the order is
*  /  % Multiplication/division/modulus

Cheers!
 D-ELF
0
 
jazzIIIloveCommented:
well...

# include <stdio.h>

int main()

{

       int a = (12*2/3); //8
       int b = (12/2*3); //18
       int c = (12*2%6); //0
       int d = (12%5*2); //4
       int e = (12/2%3); //0
       int f = (12%5/2); //1
       printf("X: %d\n",a);
       printf("X: %d\n",b);
       printf("X: %d\n",c);
       printf("X: %d\n",d);
       printf("X: %d\n",e);
       printf("X: %d\n",f);

       return 1;
}

So, the precedence of operators is same precedence group but changed because from left-to-right process of the operators in the same precedence group...
0
 
josgoodCommented:
Agreeing with jazzIIIlove and quoting from the standard:

 5.6  Multiplicative operators                               [expr.mul]

1 The multiplicative operators *, /, and % group left-to-right.
          multiplicative-expression:
                  pm-expression
                  multiplicative-expression * pm-expression
                  multiplicative-expression / pm-expression
                  multiplicative-expression % pm-expression
0
 
jazzIIIloveCommented:
<<the order is
<<*  /  % Multiplication/division/modulus

No...

To clear the issue, they are in the SAME precedence group and the order is evaluated from left to right, if more than one is existent...

Best regards...
0
 
jazzIIIloveCommented:
come on...
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 5
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now