chipaug a écrit :
> Paul,
> Thanks for your help. Please see my comments embedded below.
>
> --- In [email protected], "Paul Herring" <[EMAIL PROTECTED]> 
> wrote:
>   
>> On 5/30/07, chipaug <[EMAIL PROTECTED]> wrote:
>>     
>>> In Chapter 0 of "Accelerated C++" the authors speak of results 
>>>       
> and side
>   
>>> effects. I'm having some difficulty in distinguishing between 
>>>       
> them.
>   
>> int i, j=5;
>>
>> i = printf("%d", j++);
>>
>> Result: i  = 1 (number of characters printed)
>> Side effect: j = 6 (i.e. it's incremented)
>>     
>
> Thanks. I was confused. I thought there would be two results, i = 1 
> and j = 6, and the character printed was the side effect.
>
>   

In Accelerated C++. 0.7 A slightly deeper look.
This is exclatly what they mean.
The side effect is the printing effect of the cout statement (else I 
completly misunderstood english)

"std::cout << "hello, world!" << std:: endl;
is an expression that, as its side effect, writes Hello, World! on the 
standard output stream..."

Paul answer, is in a technical point of view of the C++ or C language, 
side effect is related
to sequence point (as I think  - 
http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V40F_HTML/AQTLTBTE/DOCU_018.HTM
 
)


In Accelerated C++, they speak about side effect as related to a 
function result.
(http://www.edm2.com/0411/introc4.html)


http://en.wikipedia.org/wiki/Side_effect_%28computer_science%29
In fact, it seems to this last definition that printf( "sdflk", j++ ) 
has two side effects (printing and incrementing)


Hope it can helps.
Regards,
David


Reply via email to