Win a copy of The Way of the Web Tester: A Beginner's Guide to Automating Tests this week in the Testing forum!

# increment

Sridhar Srinivasan
Ranch Hand
Posts: 117
Hi!
When I compile the following code I get the value as 1
public static void main(String[ ] args)
{

int k=0;
k += ++k;
System.out.println(k);
}
As per my understanding, bec's of operator precedence k becpomes 1 first and now k holds the value of 1 and then when we say k+=1 which is k=k+1(1+1) is 2.Why is it giving 1?Can anybody please explain.Thanks
[ May 18, 2004: Message edited by: Barry Gaunt ]

Jong Limb
Greenhorn
Posts: 12
k += ++k resolves to k = k + ++k. Taking the right hand side and evaluating left to right, you get k = 0 + ++(0). This resolves to k = 0 + 1; therefore k = 1.

Originally posted by Sridhar Srinivasan:
Hi!
When I compile the following code I get the value as 1
public static void main(String[ ] args)
{

int k=0;
k += ++k;
System.out.println(k);
}
As per my understanding, bec's of operator precedence k becpomes 1 first and now k holds the value of 1 and then when we say k+=1 which is k=k+1(1+1) is 2.Why is it giving 1?Can anybody please explain.Thanks

meeta verma
Greenhorn
Posts: 19
ya even i was expecting that .
Also

public static void main(String[ ] args)
{
int k=0;
k += ++k;
System.out.println(k);//1
k=0;
k=k+(++k);
System.out.println(k);//1

k=0;
k=++k +k;
System.out.println(k);//2
}
It seems as though left associativity is playing the role everywhere.