gpt4 book ai didi

java - 什么时候在表达式中评估/返回/获取 Java 变量中的值?

转载 作者:行者123 更新时间:2023-11-30 08:32:45 25 4
gpt4 key购买 nike

根据 http://introcs.cs.princeton.edu/java/11precedence/ , 后自增运算符的优先级高于加法运算符。

所以,对于下面的代码:

    int i = 1;
int j = i + i++;
System.out.println(j);

我原以为分配给 j 的表达式会按如下方式求值(每一行都是求值中的一个“步骤”):

   i + i++
i + (1) // do post-increment operator; returns 1, and makes i = 2
(2) + (1) // do addition operator. need to get the operand i, so do that.
3

但是当我尝试这个程序时,j 的值为 2。
所以我很困惑。在表达式中,它是否会在接触 i++ 之前用 i 的当前值替换表达式中的所有“i”?


编辑:这里的人们使用的短语“评估顺序”帮助我找到了以下可能有用的 stackoverflow 答案:What are the rules for evaluation order in Java? .


编辑:我在下面的答案中做了我最好的猜测。我仍然欢迎对其进行更正。

最佳答案

根据 Java Language Specification, 15.7.1

The left-hand operand of a binary operator appears to be fully evaluated before any part of the right-hand operand is evaluated.

因此,加法运算符左侧的 i 在右侧的 i++ 之前求值。

关于java - 什么时候在表达式中评估/返回/获取 Java 变量中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39925647/

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