Velocity Reviews > C++ > Sequence points

# Sequence points

Senthil
Guest
Posts: n/a

 12-01-2005
Hi,

When standard states this
"
i = v[i++]; // the behavior is undefined
i = ++i + 1; // the behavior is undefined
"

Do both of the following code snippets produces undefined behaviour or
the second one alone.

int m = 2;
int answer = ++m * ++m + ++m * ++m;

or

int m = 2
m = ++m * ++m + ++m * ++m;

What are the sequence points inside these expressions?

Thanks,
Senthil

Artie Gold
Guest
Posts: n/a

 12-01-2005
Senthil wrote:
> Hi,
>
> When standard states this
> "
> i = v[i++]; // the behavior is undefined
> i = ++i + 1; // the behavior is undefined
> "
>
> Do both of the following code snippets produces undefined behaviour or
> the second one alone.
>
> int m = 2;
> int answer = ++m * ++m + ++m * ++m;
>
> or
>
> int m = 2
> m = ++m * ++m + ++m * ++m;
>
> What are the sequence points inside these expressions?
>
> Thanks,
> Senthil
>

They both produce UB, as there *are* no sequence points in either
expression.

HTH,
--ag

--
Artie Gold -- Austin, Texas
http://goldsays.blogspot.com (new post 8/5)
http://www.cafepress.com/goldsays
"If you have nothing to hide, you're not trying!"

Pete Becker
Guest
Posts: n/a

 12-01-2005
Senthil wrote:
>
> What are the sequence points inside these expressions?
>

There aren't any. There is a sequence point at the end of each one. The
behavior of both statements is undefined, because they modify the value
of m more than once without an intervening sequence point.

--

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

Senthil
Guest
Posts: n/a

 12-02-2005
Thanks Pete and Artie!!!

I read books and i read the standard..but i am still not able to
understand what a sequence point is ?

Greetings,
Senthil

Jack Klein
Guest
Posts: n/a

 12-02-2005
On 1 Dec 2005 19:56:14 -0800, "Senthil" <(E-Mail Removed)> wrote
in comp.lang.c++:

> Thanks Pete and Artie!!!
>
> I read books and i read the standard..but i am still not able to
> understand what a sequence point is ?
>
>
> Greetings,
> Senthil

Sequence points:

1. The ';' at the end of a full expression.

2. The comma operator (but the commas that separate arguments in a
function call are NOT comma operators).

3. At the '?' in the ternary expression.

4. During a function call, after all the arguments are evaluated,
before the function begins executing.

5. When a function ends/returns or exits by throwing an exception.

6. At the evaluation of a && or || logical operator.

7. At the initialization of each base and member in a constructor
with an initialization list.

--
Jack Klein
Home: http://JK-Technology.Com
FAQs for
comp.lang.c http://www.eskimo.com/~scs/C-faq/top.html
comp.lang.c++ http://www.parashift.com/c++-faq-lite/
alt.comp.lang.learn.c-c++
http://www.contrib.andrew.cmu.edu/~a...FAQ-acllc.html

Senthil
Guest
Posts: n/a

 12-02-2005
Thanks a ton, Jack

-senthil