• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Liutauras Vilda
  • Campbell Ritchie
  • Tim Cooke
  • Bear Bibeault
  • Devaka Cooray
Sheriffs:
  • Jeanne Boyarsky
  • Knute Snortum
  • Junilu Lacar
Saloon Keepers:
  • Tim Moores
  • Ganesh Patekar
  • Stephan van Hulst
  • Pete Letkeman
  • Carey Brown
Bartenders:
  • Tim Holloway
  • Ron McLeod
  • Vijitha Kumara

Increment operator  RSS feed

 
Greenhorn
Posts: 19
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
class ex
{
public static void main(String a[]) {
int i=1;
System.out.println(i++ + i++);
System.out.println(((i++) + (i++)));
System.out.println((i++) + (i++));
}
}
The output is 3, 7, 11.
First output is clear.
Please clarify last two outputs.
Thanx
 
Monika Pasricha
Greenhorn
Posts: 19
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I got the answer.. The reason is same as for the first output.
 
Greenhorn
Posts: 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The value of i after first SOP statement becomes 2.In second SOP statement as precedence is given to the (),inside SOP statement (i++) sets i =3 and then another (i++) sets it to 4.therefore 3+4=7.In third SOP the same thing happens as in second SOP, hence 5+6 = 11
simple isn't it!!
 
Ranch Hand
Posts: 42
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Hello Pawar,
i still dont understand the operation, please break down the explanation futher.
Thanks
kaffo
 
Greenhorn
Posts: 11
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The split up is as follows
System.out.println(1 + 2)
i=3
System.out.println(((3) + (4)))
i=5
System.out.println((5) + (6))
i=7
}
}
The output is 3, 7, 11.
Thanx
uma
 
Greenhorn
Posts: 24
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Originally posted by kaffo lekan:

Hello Pawar,
i still dont understand the operation, please break down the explanation futher.
Thanks
kaffo



1.System.out.println(i++ + i++);
2.System.out.println(((i++) + (i++)));
3.System.out.println((i++) + (i++));

initial value of i=1;
Consider step 1:
Let me write i++ + i++ as a + b where a=i++ before the binary + operator and b=i++ after the binary + operator.
Since a post increment is being done,the value of a is 1, value of i is i+1 i.e 2. Now the current value of i is 2, so the value of b is i which is 2 and the value of i is incremented to 3.
So final result after step 1 is:
a=1, b=2, i=3
So the results is printed as (a+b)=(1+2)=3
Write the expression in step 2, again in terms of a and b. Then
the expression would be (a+b).
Again by appliying the same procdeure as above, the value of a is current value of i which is 3 , the value of i after this post increment is 4, the value of b is current value of i, which is 4 and the value of i after this increment is 5.
So the final values are a=3,b=4 and i=5, giing a result of a+b=3+4=7.
Similarly, by applying the same procedure to 3,value of a is current value of i which is 5, i is incremented to 6, value of b is current value of i which is 6, i is incremented to 7.
Final result is a+b=5+6 = 11.
So, the algorithm can be summarised as:
1)Let a=i++ and b=i++
2) The evaluation goes as follows, a=i, i=i+1, b=i, i=i+1,a+b(from left to right).Note that the paranthesis is steps 2, and 3 are redundant and are of no significance in this case!
Hope this helps!

 
Ranch Hand
Posts: 234
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Originally posted by Monika Pasricha:
[B]class ex
{
public static void main(String a[]) {
int i=1;
System.out.println(i++ + i++);

i ++ = 1 (means the value of i and pass ++ i.e 1 and pass 2)
i ++ = 2 (means the value of i and pass ++ i.e. 2 and pass 3)
so te result of first statement is 3 (i is 2 here)

System.out.println(((i++) + (i++)));
(i++) = 3 (means the value of i and ++ (2++) = (3))
(i++) = 4 (means the value of i and ++ (3++) = (4))
so the result here is 3 + 4 = 7 ( i is 4 here)
System.out.println((i++) + (i++));
(i++) = 5 (means the value of i and ++ (4++) = (5))
(i++) = 6 (means the value of i and ++ (5++) = (6))
so the result here is 5 + 6 = 11
}
}
The output is 3, 7, 11.

 
Greenhorn
Posts: 15
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
the simplest way to explain is this for post increment operations:
The increment works as follows:
The first one:
sop(1(2) + 2(3))
total is 3 but the value of i is 3
second one:
sop(3(4) + 4(5))
total is 7 and the value of i is 7
third one:
sop(5(6) + 6(7))
total is 11 and the value of i 7
Trust this sequencing should help
venkat
 
It is sorta covered in the JavaRanch Style Guide.
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!