我想知道为什么这段代码会给出输出112
最后一位2
是如何创建的?
public static void main(String[] args) {
int i = 0;
System.out.print(++i);
System.out.print(i++);
System.out.print(i);
为什么会这样?
答案 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,因此在两个增量(++i
和i++
)之后,它将变为2.
i++
和++i
都将i
的值递增1。
它们类似于
i = i+1;
但是++i
增加i
的值然后使用它,因此0
变为1
并打印出来,而i++
首先使用值,然后递增i
的值,因此打印值为1
,然后它变为2
,因此最后一位(i
的最终值)为2。
答案 6 :(得分:1)
只需;
在后增量中,增量在读取变量后完成。
在预增量中,变量值首先递增,然后在表达式中使用。