| Author |
Increment Operator
|
Alpana Singh
Ranch Hand
Joined: Sep 27, 2005
Posts: 36
|
|
I came across this question. public class static1{ public static void main (String args[]) { int i=0; i=i++; i=i++; i=i++; System.out.println(i); } } And the ouput generated is 0.I can't understand why? Please help.
|
 |
Tim McGuire
Ranch Hand
Joined: Apr 30, 2003
Posts: 819
|
|
The ++ is evaluated after the assignment. so i starts out as zero. i=i++; // assign the value of i as zero, then increment. The incremented value is not kept! i is still zero for the next expression: i=i++; // same as saying i=0 and so on try it with i = ++i instead to see the difference.
|
 |
Srinivasa Raghavan
Ranch Hand
Joined: Sep 28, 2004
Posts: 1228
|
|
Also have a look at these simple one good one
|
Thanks & regards, Srini
MCP, SCJP-1.4, NCFM (Financial Markets), Oracle 9i - SQL ( 1Z0-007 ), ITIL Certified
|
 |
Steve Morrow
Ranch Hand
Joined: May 22, 2003
Posts: 657
|
|
The ++ is evaluated after the assignment.
Not quite; the assignment happens *last*. The increment occurs after the expression "i++" is evaluated. That expression ("i++") evaluates to the original value of i, and the result is "remembered". If the result of the expression "i++" is stored back into i, it's as if nothing happened at all. Here's another example: The right-hand expression is evaluated as follows, starting with the first i++, the second i++, then adding the results of those two expressions, then assigning *that* value to i... [ September 30, 2005: Message edited by: Steve Morrow ]
|
 |
Alpana Singh
Ranch Hand
Joined: Sep 27, 2005
Posts: 36
|
|
|
Thanks Steve,Tim and Raghavan for clearing this.
|
 |
 |
|
|
subject: Increment Operator
|
|
|