Sequence points

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Senthil

    #1

    Sequence points

    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

    #2
    Re: Sequence points

    Senthil wrote:[color=blue]
    > 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
    >[/color]
    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!"

    Comment

    • Pete Becker

      #3
      Re: Sequence points

      Senthil wrote:[color=blue]
      >
      > What are the sequence points inside these expressions?
      >[/color]

      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)

      Comment

      • Senthil

        #4
        Re: Sequence points

        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

        Comment

        • Jack Klein

          #5
          Re: Sequence points

          On 1 Dec 2005 19:56:14 -0800, "Senthil" <s.senthilvel@g mail.com> wrote
          in comp.lang.c++:
          [color=blue]
          > 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[/color]

          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.l earn.c-c++

          Comment

          • Senthil

            #6
            Re: Sequence points

            Thanks a ton, Jack


            -senthil

            Comment

            Working...