Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #20512

Re: pointer arithmetic question.

From Kaz Kylheku <kaz@kylheku.com>
Newsgroups comp.lang.c
Subject Re: pointer arithmetic question.
Date 2012-05-08 14:32 +0000
Organization Aioe.org NNTP Server
Message-ID <20120508061850.883@kylheku.com> (permalink)
References <8d75171a-27cf-45ac-b9f4-57427d79b0d6@h4g2000pbe.googlegroups.com> <4FA67433.60EC@mindspring.com> <4FA8F6EC.52A3@mindspring.com> <kfnbolyx08z.fsf@x-alumni2.alumni.caltech.edu>

Show all headers | View raw


On 2012-05-08, Tim Rentsch <txr@alumni.caltech.edu> wrote:
> pete <pfiland@mindspring.com> writes:
>
>> pete wrote:
>>> 
>>> somenath wrote:
>>> >
>>> > Hi All,
>>> >
>>> > The following program is crashing.
>>> 
>>> >         char s[] ="test";
>>> >         char *t=s;
>>> 
>>> >                  *t = toupper(*t++);
>>> >                  //t++;
>>
>>> > But how that can happen also ? As post increment operator's side
>>> > effect will be taking effect after the sequence point in this case
>>> > after execution of the code *t = toupper(*t++);
>>
>>> Also,
>>> for the above definition of (t),
>>> the opcode for this expression: (t++)
>>> may or may not be
>>> the same as the opcode for this expression: (++t, t-1).
>>> Whether the side effect takes place before
>>> or after the value of (t++)is determined,
>>> is up to the implementation.
>>
>> That's the old way.
>> In the new standard, 
>> there is a sequence point 
>> in the value of a postfix increment expression.
>>
>> n1570
>> 6.5.2.4 Postfix increment and decrement operators
>> 2   The value computation of the result is sequenced    
>>     before the side effect of updating the stored value of the operand.
>
> Not a sequence point but a sequenced-before relationship.  A
> sequenced-before relationship is less restrictive than a sequence
> point. 

No it isn't.  It is exactly the same thing.


> (The term 'sequence point' is a shorthand meaning all the
> value computations and side-effects of expressions before the
> sequence point are sequenced before all the value computations

The expressions before a sequence point are only those which are
listed as being before that particular sequence point.

> and side-effects of expressions after the sequence point.  The
> exact definition is given in 5.1.2.3 p3.)

This is restricted to the subexpression in which it is happening,
and so it doesn't cover all expressions.

So even though the comma operator has a sequence point,
A is not sequenced before D:

  (A, B) + (C, D)

A sequence point amounts to the same thing as "sequenced before".

To say that "A is evaluated, then a sequence point takes place, and then B"
is logically equivalent to "A is sequenced before B".

> Note that the relationship described here is only between
> producing the result and updating the stored value.  In the
> assignment
>
>    *t = toupper( *t++ );
>
> there is still no sequencing relationship between the
> subexpressions '*t' and '*t++'.

This would still be true even if the wording was that there is
a sequence point in the ++ operator. 

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

pointer arithmetic question. somenath <somenathpal@gmail.com> - 2012-05-05 21:46 -0700
  Re: pointer arithmetic question. Philip Lantz <prl@canterey.us> - 2012-05-05 23:25 -0700
    Re: pointer arithmetic question. Paul N <gw7rib@aol.com> - 2012-05-06 07:52 -0700
  Re: pointer arithmetic question. Kaz Kylheku <kaz@kylheku.com> - 2012-05-06 06:58 +0000
  Re: pointer arithmetic question. pete <pfiland@mindspring.com> - 2012-05-06 08:53 -0400
    Re: pointer arithmetic question. pete <pfiland@mindspring.com> - 2012-05-08 06:35 -0400
      Re: pointer arithmetic question. Tim Rentsch <txr@alumni.caltech.edu> - 2012-05-08 06:37 -0700
        Re: pointer arithmetic question. Kaz Kylheku <kaz@kylheku.com> - 2012-05-08 14:32 +0000
          Re: pointer arithmetic question. Tim Rentsch <txr@alumni.caltech.edu> - 2012-05-08 10:31 -0700
            Re: pointer arithmetic question. Kaz Kylheku <kaz@kylheku.com> - 2012-05-09 21:04 +0000
              Re: pointer arithmetic question. Tim Rentsch <txr@alumni.caltech.edu> - 2012-05-10 10:06 -0700
                Re: pointer arithmetic question. Kaz Kylheku <kaz@kylheku.com> - 2012-05-11 17:52 +0000
                Re: pointer arithmetic question. Tim Rentsch <txr@alumni.caltech.edu> - 2012-05-11 19:27 -0700

csiph-web