Can anybody explain why the o/p of the following code is 1,4. I am not getting the logic:-
public class Main { public static void main(String args[]){ int x =0; for(int i=0; i < 2; i++){ x +=(x += ++x); System.out.println(x); } } }
Thanks in Advance
Alex Belisle Turcot
Ranch Hand
Joined: Apr 26, 2005
Posts: 516
posted
0
Hi,
Originally posted by Chinmay Kant: Can anybody explain why the o/p of the following code is 1,4. I am not getting the logic:-
public class Main { public static void main(String args[]){ int x =0; for(int i=0; i < 2; i++){ x +=(x += ++x); System.out.println(x); } } }
Thanks in Advance
I hope this helps:
1ST LOOP: x=0 x +=(x += ++x); - Inside parentheses: x = x + (1+x) ===> x = 0 + 1 = 1 - Outside: x = x + parentheses ===> x = 0 + 1 = 1 - x = 1
2ND LOOP: x=1 x +=(x += ++x); - Inside parentheses: x = x + (1+x) ===> x = 1 + 2 = 3 - Outside: x = x + parentheses ===> x = 1 + 3 = 4 - x = 4
Regards, Alex
Chinmay Kant
Greenhorn
Joined: Feb 04, 2008
Posts: 20
posted
0
I hope this helps:
1ST LOOP: x=0 x +=(x += ++x); - Inside parentheses: x = x + (1+x) ===> x = 0 + 1 = 1 - Outside: x = x + parentheses ===> x = 0 + 1 = 1 - x = 1
Thanks Alex, But one doubt when ++x occurs it chagnges the value of x from 0 to 1 so, when this operation is done does that value does not affect further calculation
for eg:- Inside parentheses ++x changes the value to 1 so, x = x +(++x) ---> x = 1 + 1 ---> x= 2 so, wo should be used further.
Arun Kumar Gaddam
Ranch Hand
Joined: May 05, 2007
Posts: 58
posted
0
Ya Alex that's my doubt tooo........
when x++ happens does it change change value to 1....
SrinivasaRao Madugula
Greenhorn
Joined: Feb 06, 2008
Posts: 7
posted
0
x +=(x += ++x);
As ++x is part of the expression, the value of x will not be modified. When the controller comes to ++x, it evaluates to increment the "VALUE" of x and replaces that value as follows,
x += (x += 1) //if x=0
Hope you got it.
Arun Kumar Gaddam
Ranch Hand
Joined: May 05, 2007
Posts: 58
posted
0
Thanks SrinivasaRao Madugula.........if is that the case....thanks for your answer......
surabhi jain
Greenhorn
Joined: Jan 31, 2008
Posts: 6
posted
0
yeah if we consider that x still retains its previous value even after ++x the answer follows.....but the problem is why is the old value of x still retained in the expression.....anybody please elaborate...
I agree. Here's the link: http://ej-technologies/jprofiler - if it wasn't for jprofiler, we would need to
run our stuff on 16 servers instead of 3.