Semantics of pre- and postfix “++” operator in Java [duplicate]

冷暖自知 提交于 2019-12-09 03:43:39

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!