Java中前缀和后缀“++”运算符的语义

时间:2013-05-12 09:56:49

标签: java post-increment pre-increment

我想知道为什么这段代码会给出输出112
最后一位2是如何创建的?

public static void main(String[] args) {
    int i = 0;
    System.out.print(++i);
    System.out.print(i++);
    System.out.print(i);

为什么会这样?

7 个答案:

答案 0 :(得分:4)

您的代码段被翻译为

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

这就是为什么最终结果是2。

++i它在被print方法调用之前递增变量,i++它在方法执行之后递增变量。

答案 1 :(得分:3)

i++是后增量运算符,其表达式值为i的旧值,但是增加i的副作用。值为1,但会将i更改为2

答案 2 :(得分:2)

当我们使用post或pre increment运算符时,它会增加值。

后增量运算符(i++)首先赋值,然后递增。预增量运算符(++i)先递增,然后赋值。 他们都表现得像这样:

int i=0;
i=i++;
System.out.println(i); //1
i=++i;
System.ou.println(i); //1

答案 3 :(得分:2)

此代码运行时:

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
}

答案 4 :(得分:1)

我最初是0,然后它是预先递增并打印,所以你有第一个,然后它再次打印,你有第二个1,然后后递增,然后打印最后一次,你有2

答案 5 :(得分:1)

您在i上应用了两个增量。初始值为0,因此在两个增量(++ii++)之后,它将变为2.

i++++i都将i的值递增1。

它们类似于

i = i+1;

但是++i增加i的值然后使用它,因此0变为1并打印出来,而i++首先使用值,然后递增i的值,因此打印值为1,然后它变为2,因此最后一位(i的最终值)为2。

答案 6 :(得分:1)

只需;

在后增量中,增量在读取变量后完成。

在预增量中,变量值首先递增,然后在表达式中使用。