Re: define side effects
From: Joona I Palaste (palaste_at_cc.helsinki.fi)
Date: 05/05/04
- Next message: Darrell Grainger: "Re: file access"
- Previous message: Gautam: "Re: define side effects"
- In reply to: Gautam: "Re: define side effects"
- Next in thread: Neil Kurzman: "Re: define side effects"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: 5 May 2004 16:52:37 GMT
Gautam <gautam92in@yahoo.com> scribbled the following:
> rlb@hoekstra-uitgeverij.nl (Richard Bos) wrote in message news:<4098c06c.80452765@news.individual.net>...
>> niklaus@gamebox.net (Niklaus) wrote:
>>
>> > This is one of the posts that i got.
>> > ------------------------------
>> > A "side effect" of an operation is something that
>> > *happens*, not something that *is produced*. Examples:
>> > In the expression 2+2, the value 4 *is produced*. Nothing
>> > *happens*.
>> > Thus, 4 is the value of the expression, and it has no side effects.
>> > In the expression g=2.0, the value 2.0 is produced. What *happens*
>> > is that 2.0 is assigned to g. Thus, 2.0 is the value of the
>> > expression,
>> > and its side effect is to assign 2.0 to g.
>> > In the expression (int)g, the value 2 is produced. Nothing happens.
>> > Thus, 2 is the value of the expression (int)g, and it has no side
>> > effects.
>> > In the expression (a=1,++a), the value 2 is produced. What happens
>> > is that first 1 is assigned to a, and then a is incremented; those are
>> > the side effects of the expression.
>> > -----------------------------
>> >
>> > This seems to be a good definition in most of the cases.
>> >
>> > I argue that in k=(int)2.0 , 2 is produced and the truncation of 2.0
>> > -> 2 is that happens.
>>
>> No; the 2.0 is not changed. Nothing happens "behind the scenes"; the
>> value 2.0 does get truncated, but only for the direct reason of
>> calculating the value of the expression. Assigning this truncated value
>> to k _is_ a side effect.
>>
>> > I am really confused. Can some one give me a more clear definition
>> > of side effects ?
>>
>> Well, according to the Standard,
>>
>> # [#2] Accessing a volatile object, modifying an object,
>> # modifying a file, or calling a function that does any of
>> # those operations are all side effects, which are changes
>> # in the state of the execution environment.
>>
>> Whether that is more clear, well... it's unambiguous, anyway.
>>
>> > If i apply the same definition to i=j++ where j=3 then i=3 and j=4
>> > are the side effects and value 3,4 are produced. Am i correct ?
>>
>> No; 4 is never produced. j is increased to 4, but that value is never
>> passed on to any other sub-expression; its previous value, 3, is.
> regarding side - effects
> what exactly does this sequence 'point mean'
It's a point during the evaluation of an expression, when all side
effects are guaranteed to have taken place. Sequence points include:
- The terminating ; in a statement
- The && and || operators
- The ?: operator
- The , operator
Also, AFAIK when a function is called, its entry point forms a
sequence point for the expressions in its arguments.
-- /-- Joona Palaste (palaste@cc.helsinki.fi) ------------- Finland --------\ \-- http://www.helsinki.fi/~palaste --------------------- rules! --------/ "You could take his life and..." - Mirja Tolsa
- Next message: Darrell Grainger: "Re: file access"
- Previous message: Gautam: "Re: define side effects"
- In reply to: Gautam: "Re: define side effects"
- Next in thread: Neil Kurzman: "Re: define side effects"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|