Win a copy of Head First Agile this week in the Agile forum!
programming forums Java Java JSRs Mobile Certification Databases Caching Books Engineering OS Languages Paradigms IDEs Build Tools Frameworks Products This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
Sheriffs:
Saloon Keepers:
Bartenders:

# Operators

Chinmay Kant
Greenhorn
Posts: 20
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
Posts: 516
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
Posts: 20
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
Posts: 58
Ya Alex that's my doubt tooo........

when x++ happens does it change change value to 1....

SrinivasaRao Madugula
Greenhorn
Posts: 7
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
Posts: 58
Thanks SrinivasaRao Madugula.........if is that the case....thanks for your answer......

surabhi jain
Greenhorn
Posts: 6
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...

 Don't get me started about those stupid light bulbs.