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

use*_*612 2 java pre-increment post-increment

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

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

为什么会发生这种情况?

Pig*_*ras 5

你的片段被翻译为

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
Run Code Online (Sandbox Code Playgroud)

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

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