Asad,

"But when i==3 and ++m+1 is executed then why the value of m is incremented by 
1 only? 
(++m+1) This should increment the value of m by 2 :("

m is incremented by 1 for sure and it's easy to see why.

When (i==3 ? ++m+1 : m--) is evaluated and i equals 3 the result is:

1. m incremented by 1 first (because the prefix increment operator has
higher precedence over the addition operator;

2. then 1 is added to m's new value and cout'ed, but m doesn't change at all.

One thing is ++m+1, another m=++m+1 (yes, in this case m's final value is 
greater than m's initial value by 2: m's initial value is first incremented by 
1, then 1 is added to the result and finally the result is stored back to m.

Should you really add 2 to m when i equals 3, make (i==3 ? m=++m+1 : m--).

No problem placing an assignment inside the ternary conditional if you don't 
know: it has/returns the value of the assignment.

To boot, and since the = operator associates from right to left, it's
possible an assigment like this: i=j=k=0.

Best,

Geraldo


--- In [email protected], Asad Abbas <cyberstuden...@...> wrote:
>
> Consider the following code
>   
>   main()
>      { 
>      for(int i=1,m=9;++i< 4;)
>      for(int j=1;j<4;j++)
>      for (int k=1;k++<4;)
>      cout<<(i==3? ++m+1:m-- );
>      getch();
>      }
> 
> Its output: (on Dev C++)
> 
> 9876543212345678910
> 
> ---
> 
> I could not understand when 'i' is not equal to 3 'm--' is executed so value 
> of m is decremented by '1' (thats right)
> But when i==3 and ++m+1 is executed then why the value of m is incremented by 
> 1 only? 
> (++m+1) This should increment the value of m by 2 :(
>  
> ---
>  
> Where am i Wrong?
> 
> Thanx in advance!
> 
> Regards!
> Asad Abbas
> Pakistan
> ---
> 
> For latest technology news 
> visit 
> http://latest- technologies. tk/
> To keep urself updated with changing world!
> 
> 
>       
> 
> [Non-text portions of this message have been removed]
>


Reply via email to