2013-05-12 77 views
2

我想知道为什么这段代码给出输出112
最后一位数字2如何创建?Java中的前后缀“++”运算符的语义

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

为什么会发生这种情况?

+1

这没有什么关系的迭代。 – Cairnarvon 2013-05-12 09:58:23

+0

'++ i'表示增量并读取'i','i ++'表示读取和增加'i','i'表示读取'i'。 – 2013-05-12 10:02:14

+1

作为一般规则;从不这样做,它会导致不可读的代码,增加并单独使用一个值 – 2013-05-12 10:35:55

回答

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它是由印刷方法被调用之前递增变量和i++这是incrementin g执行方法后的变量。

3

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

1

i是初始为0,那么它是预加和印刷让你有第一1,然后将其再次印刷和你有第二1,则后加一,然后打印的最后时刻,你必须2

1

您在i应用两个增量。的初始值是0,因此两个增量(++ii++)后它将成为2.

两个i++++i通过一个递增的i值。

它们类似于

i = i+1; 

++i一个递增的i值然后使用它,所以0变得1并打印出来,同时i++首先使用的值,然后递增的i值,所以打印值为1然后它变成2,因此最后一个数字(最终值为i)为2.

1

简单地;

在后递增,变量被读取后增量完成。

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

2

当我们在使用后或预增操作符它增加了价值。

后增量运算符(i++)第一分配值,然后递增它。预增量运算符(++i)先递增,然后赋值。 他们都这样的表现:

int i=0; 
i=i++; 
System.out.println(i); //1 
i=++i; 
System.ou.println(i); //1 
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 
}