问题
I wondering to know why this snippet of code give output 112
How this last digit 2 was creating?
public static void main(String[] args) {
int i = 0;
System.out.print(++i);
System.out.print(i++);
System.out.print(i);
Why does this happen?
回答1:
Your snippet it's translated as
int i = 0;
i = i + 1; // 1
System.out.print(i); // 1
System.out.print(i); // 1
i = i + 1; // 2
System.out.print(i); // 2
That's why the final result it's a 2.
++i it's incrementing the variable before being called by the print method and i++ it's incrementing the variable after the method execution.
回答2:
i++ is the post-increment operator, which has expression value the old value of i, but a side-effect of incrementing i. The value is 1, but it leaves i changed to 2.
回答3:
When we use post or pre increment operator it increases the value.
Post increment operator (i++) assigns the value first, then increments it. Pre increment operator (++i) increments first then assigns the value.
They both behave like this :
int i=0;
i=i++;
System.out.println(i); //1
i=++i;
System.ou.println(i); //1
回答4:
When this code runs:
public static void main(String[] args) {
int i = 0; //i=0;
System.out.print(++i); // increments i to i=1, and prints i
System.out.print(i++); // prints i and then increments it to i=2
System.out.print(i); // prints i, i.e. 2
}
回答5:
i is initially 0, then it is pre-incremented and printed so you have the first 1, then it is printed again and you have the second 1, then post-incremented, then printed for the last time and you have the 2
回答6:
Simply;
In post increment, the increment is done after the variable is read.
In pre increment, the variable value is incremented first, then used in the expression.
回答7:
You are applying two increments on i. The initial value was 0 so after two increments (++i and i++ )it will become 2.
Both i++ and ++i are incrementing the value of i by one.
They are similar to
i = i+1;
but the ++i one increments the value of i then uses it, so 0 becomes 1 and printed out, while the i++ first uses the value and then increments the value of i, so the printed value is 1 and then it becomes 2 hence the last digit(the final value of i) is 2.
来源:https://stackoverflow.com/questions/16506147/semantics-of-pre-and-postfix-operator-in-java