gpt4 book ai didi

java - =+ Java 中的运算符

转载 作者:搜寻专家 更新时间:2023-10-30 21:46:55 27 4
gpt4 key购买 nike

考虑这段代码:

long val = 0;
for(int i = 0; i < 2; val++)
val =+ ++i;

System.out.println(val);

为什么最后是val = 3

我会这样计算:

val     i
0 0 i < 2 = true;
0 0 ++i;
0 1 val =+ 1;
1 1 (end of for loop) val++;
2 1 i < 2 = true;
2 1 ++i;
2 2 val =+ 2;
4 2 (end of for loop) val++;
5 2 i < 2 = false;
Output: 5

但它是 3。我不明白为什么 val =+++ii = 1 时第二次没有完成并得到预递增到 i = 2

最佳答案

让我们首先关注看起来不寻常的行:

val =+ ++i;

这里的运算符是=(赋值),+(一元加),++(预自增)。没有 =+ 运算符。 Java 将其解释为两个运算符:=+。添加适当的空格会更清楚:

val = + ++i;

现在我们来分析一下处理过程:

第一次迭代:vali0i 预递增到 1,这是 ++i 的结果。一元 + 什么都不做,1 被分配给 val。然后迭代语句 val++ 发生,现在 val2i 仍然是 1,因此满足 for 循环条件并发生第二次迭代。

第二次迭代:i 再次预递增到 2。一元 + 什么都不做,val 被赋值为 2。迭代语句 val++ 再次出现,现在是 3。但是 i 现在是 2,而且它不小于 2,所以 for 循环终止,并且 val -- 3 - 被打印出来。

关于java - =+ Java 中的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19236010/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com