Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| 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> |
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
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