Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > C++ > Re: Unpredictab...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 12 of 14 Topic 45817 of 48020
Post > Topic >>

Re: Unpredictable result of Increment operation

by "Victor Bazarov" <v.Abazarov@[EMAIL PROTECTED] > May 10, 2008 at 09:47 AM

Ian Collins wrote:
> brno wrote:
>> James Kanze dixit:
>>> On May 9, 2:54 am, "Victor Bazarov" <v.Abaza...@[EMAIL PROTECTED]
> wrote:
>>>> Ian Collins wrote:
>>>>> bintom wrote:
>>>>>> Is there any reason why the following C++ code behaves as it
>>>>>> does ?
>>>
>>>>>> int i;
>>>
>>>>>> i=1;  cout << (++i)++;           Output: 2
>>>
>>>>> Because it's nonsensical undefined behaviour.
>>>
>>>> Why is it non-sensical?  Why is it undefined?
>>>
>>> Because the standard says so.  You're modifying the same object
>>> twice without an intervening sequence point.
>>
>> Can you tell what is an intervening sequence point ?
>>
> A sequence point occurs after the evaluation of a full expression.
> "(++i)++;" is an expression with two modifications of i.

To brno:

A sequence point is a definite *moment* in the execution of the
program, at which all the side effects of the previous calculations
have taken place.  There are several situations in which a sequence
point (SP) is known to exist.  First, there is a SP at a semicolon.
There is a SP after evaluation of all arguments of a function and
just before the call to that function.  There is another SP right
after the function returns.  There is another SP after each object
is initialised in a definition statement.  A comma operator also
introduces a SP, and so does every logical OR and logical AND
operator.  I think that's about it.  I don't think there are other
sequence points defined.

The concept of a sequence point is im****tant for allowing the C++
compiler to create certain optimizations when it generates code
from a C++ program.  Sequence points are a limitation on the
execution of the program, so too many of those would mean the
code cannot be optimized.  Too few of them might mean the code
won't behave predictably.

HTH

V
-- 
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask
 




 14 Posts in Topic:
Unpredictable result of Increment operation
bintom <binoythomas110  2008-05-08 17:12:15 
Re: Unpredictable result of Increment operation
Ian Collins <ian-news@  2008-05-09 12:16:10 
Re: Unpredictable result of Increment operation
"Victor Bazarov"  2008-05-08 20:54:12 
Re: Unpredictable result of Increment operation
Ian Collins <ian-news@  2008-05-09 13:31:15 
Re: Unpredictable result of Increment operation
Ian Collins <ian-news@  2008-05-10 20:55:51 
Re: Unpredictable result of Increment operation
Jack Klein <jackklein@  2008-05-08 21:46:21 
Re: Unpredictable result of Increment operation
bintom <binoythomas110  2008-05-09 01:02:00 
Re: Unpredictable result of Increment operation
James Kanze <james.kan  2008-05-09 06:10:12 
Re: Unpredictable result of Increment operation
"Victor Bazarov"  2008-05-09 10:18:03 
Re: Unpredictable result of Increment operation
brno <brno.barutchek@[  2008-05-10 10:34:32 
Re: Unpredictable result of Increment operation
Ian Collins <ian-news@  2008-05-10 21:01:24 
Re: Unpredictable result of Increment operation
"Victor Bazarov"  2008-05-10 09:47:14 
Re: Unpredictable result of Increment operation
James Kanze <james.kan  2008-05-10 08:30:56 
Re: Unpredictable result of Increment operation
James Kanze <james.kan  2008-05-10 08:37:20 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Tue Oct 14 8:40:45 CDT 2008.