gpt4 book ai didi

java - 在 Java 中,为什么括号中的赋值不会在表达式的其余部分被求值之前发生?

转载 作者:搜寻专家 更新时间:2023-11-01 01:21:27 25 4
gpt4 key购买 nike

考虑

int a = 20;
a = a + (a = 5); // a == 25, why not 10?

括号不是优先于所有优先规则吗?在评估某些表达式之前,RHS 上的某些变量是否已预填充?

最佳答案

因为 a 在您的示例中首先加载,然后 计算括号中的位。如果您颠倒顺序:

int a = 20;
a = (a = 5) + a;
System.out.println(a);
10

... you do indeed get 10. Expressions are evaluated from left to right.

Consider this:

f() + g()

f 将在 g 之前被调用。想象一下,在

f() + (g())

f 之前调用 g

这在 JLS §15.7.1 中有详细说明(感谢@paisanco 在评论中提出)。

关于java - 在 Java 中,为什么括号中的赋值不会在表达式的其余部分被求值之前发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24983606/

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