gpt4 book ai didi

java - 分配一个变量,实际发生了什么,Java

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:46:52 25 4
gpt4 key购买 nike

在下面的例子中实际发生了什么?

int a = 1;
a += (a = 2);

输出是 3,但是我想知道幕后到底发生了什么。例如,我知道括号比 + 具有更高的优先级,因此首先发生 (a = 2) 表达式应该变为 a = 2 + 2。在运行时,首先应执行括号内的表达式,然后 a 变为 2。似乎 + 左侧的第一个 a 之前“加载” (a = 2) 并且这最后一个表达式似乎并没有覆盖之前的加载。换句话说,我对幕后究竟发生了什么感到很困惑。

如果有人知道,请提前致谢。

最佳答案

来自 JLS section §15.26.2 Compound Assignment Operators :

A compound assignment expression of the form E1 op= E2 is equivalent to E1 = (T)((E1) op (E2)), where T is the type of E1, except that E1 is evaluated only once.

因此对于您的示例,我们有:

a = (a) + (a = 2)

从左到右计算表达式。因此输出 3

关于java - 分配一个变量,实际发生了什么,Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15303350/

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