我想知道为什么这段代码会给出输出112
最后一个数字2是如何创建的?
public static void main(String[] args) {
int i = 0;
System.out.print(++i);
System.out.print(i++);
System.out.print(i);
为什么会这样?
我想知道为什么这段代码会给出输出112
最后一个数字2是如何创建的?
public static void main(String[] args) {
int i = 0;
System.out.print(++i);
System.out.print(i++);
System.out.print(i);
为什么会这样?
你的片段被翻译为
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++递增变量,并在方法执行之后递增变量。
i++是后自增运算符,它的表达式值是 的旧值i,但是是自增的副作用i。值为1,但它的叶子i变为2。
当我们使用 post 或 pre increment 运算符时,它会增加值。
后自增运算符 ( i++) 先赋值,然后再自增。预递增运算符 ( ++i) 先递增,然后赋值。他们都表现得像这样:
int i=0;
i=i++;
System.out.println(i); //1
i=++i;
System.ou.println(i); //1
当此代码运行时:
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
}
您在 上应用两个增量i。初始值为 0,因此经过两次增量 (++i和i++) 后,它将变为 2。
i++和都++i将 的值加i一。
它们类似于
i = i+1;
但是++i一个增加 的值i然后使用它,所以0变成1并打印出来,而第i++一个使用该值,然后增加 的值i,所以打印的值是1,然后它变成2因此最后一个数字(的最终值 i)是2.
简单地;
在后增量中,增量是在读取变量后完成的。
在预增量中,变量值首先递增,然后在表达式中使用。
i 最初是 0,然后它是预先递增并打印的,所以你有第一个 1,然后再次打印它,你有第二个 1,然后后递增,然后最后一次打印,你有 2