Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

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

Posted on 2008-10-12
9
Medium Priority
?
232 Views
Last Modified: 2013-12-14
why is it that, (25%3/3.0) is  0.333333

which operator takes precedence?
0
Comment
Question by:Emmatee1
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 2
9 Comments
 
LVL 12

Accepted Solution

by:
jazzIIIlove earned 2000 total points
ID: 22698222
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
 
LVL 12

Expert Comment

by:jazzIIIlove
ID: 22698224
high to low order:
1)...
2)...
3)...
0
 
LVL 13

Expert Comment

by:josgood
ID: 22698234
% 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
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
LVL 3

Expert Comment

by:DrunkenELF
ID: 22698258

Dear emmatee,

[/] Division has precedence than modulus [%]

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

Cheers!
 D-ELF
0
 
LVL 12

Expert Comment

by:jazzIIIlove
ID: 22698296
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
 
LVL 13

Expert Comment

by:josgood
ID: 22698368
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
 
LVL 12

Expert Comment

by:jazzIIIlove
ID: 22698771
<<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
 
LVL 12

Expert Comment

by:jazzIIIlove
ID: 22772066
come on...
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Programmer's Notepad is, one of the best free text editing tools available, simply because the developers appear to have second-guessed every weird problem or issue a programmer is likely to run into. One of these problems is selecting and deleti…
Update (December 2011): Since this article was published, the things have changed for good for Android native developers. The Sequoyah Project (http://www.eclipse.org/sequoyah/) automates most of the tasks discussed in this article. You can even fin…
The viewer will learn how to use NetBeans IDE 8.0 for Windows to connect to a MySQL database. Open Services Panel: Create a new connection using New Connection Wizard: Create a test database called eetutorial: Create a new test tabel called ee…
The viewer will learn how to synchronize PHP projects with a remote server in NetBeans IDE 8.0 for Windows.

604 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question