2

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

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

为什么会这样?

4

7 回答 7

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

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

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

于 2013-05-12T10:04:29.220 回答
3

i++是后自增运算符,它的表达式值是 的旧值i,但是是自增的副作用i。值为1,但它的叶子i变为2

于 2013-05-12T09:59:33.680 回答
2

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

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

int i=0;
i=i++;
System.out.println(i); //1
i=++i;
System.ou.println(i); //1
于 2013-05-12T10:27:58.557 回答
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
}
于 2013-05-12T10:44:41.847 回答
1

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

i++和都++i将 的值加i一。

它们类似于

i = i+1;

但是++i一个增加 的值i然后使用它,所以0变成1并打印出来,而第i++一个使用该值,然后增加 的值i,所以打印的值是1,然后它变成2因此最后一个数字(的最终值 i)是2.

于 2013-05-12T10:06:14.777 回答
1

简单地;

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

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

于 2013-05-12T10:07:38.643 回答
1

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

于 2013-05-12T10:01:39.847 回答