# the result of the following expressions

• November 13th, 2012, 12:58 AM
D3xt3R
the result of the following expressions
hello,

any can explain me the which a am going to calculate first of this

int α=1 double d=1.0

a = 5 + 5 * 2 % a--;

this

d + = 1.5 * 3 + (++d);

this
d - = 1.5 * 3 + d++;

i found wrong results i want to know the mistake how can i calculate this without c++
thanks a lot!!!
• November 13th, 2012, 03:38 AM
Paul McKenzie
Re: the result of the following expressions
Quote:

Originally Posted by D3xt3R
hello,

any can explain me the which a am going to calculate first of this

int α=1 double d=1.0
Code:

```    a = 5 + 5 * 2 % a--;                  ...     d + = 1.5 * 3 + (++d);     ...     d - = 1.5 * 3 + d++;```

Let me ask you, what did you expect the answer to be for any of these expressions?

The problem is that there is no answer. There is no guarantee when d++ or ++d will be executed in that block of code. There is something called a "sequence point" in C++, and I suggest you do a google search for that term.

http://en.wikipedia.org/wiki/Sequence_point

Instead of code that looks like what you wrote, what's wrong with just doing things simple? Evaluate each step, one at a time instead of trying to erroneously cram everything into one statement.

Regards,

Paul McKenzie
• November 14th, 2012, 12:51 AM
D3xt3R
Re: the result of the following expressions
i know the sequence but i can figure out these examples i run it in c++ and the results are different from those i made on the paper
that the reason i ask or help i anyone can explain how can calculate them
thanks
• November 14th, 2012, 02:33 AM
OReubens
Re: the result of the following expressions
Paul already answered this. See the sequence point link. Those expressions do not have a guaranteed answer that will be the same on every C++ compiler you run it on.
• November 14th, 2012, 04:22 AM
Paul McKenzie
Re: the result of the following expressions
Quote:

Originally Posted by D3xt3R
i know the sequence

No you don't know the sequence, and neither does anyone else.

Again, there is no guarantee how C++ will calculate those lines. There is no "sequence" that is guaranteed to occur.
Quote:

i run it in c++ and the results are different from those i made on the paper
So tell us, what did you do "on paper"? Did you just assume that "++d", "+=", "-=", and "d++" were supposed to always do things in a certain order if they appear in a single line of code? If you did assume this, then you're wrong.

Again, read the link I gave you. Simply put, if you have prefix, postfix, addition, subtraction on one line of code like that, then the behaviour of the program is undefined.
Quote:

that the reason i ask or help i anyone can explain how can calculate them
No one can calculate them, since the sequence is ambiguous.

Regards,

Paul McKenzie