gpt4 book ai didi

java - 了解算术表达式的输出

转载 作者:行者123 更新时间:2023-12-02 05:02:37 25 4
gpt4 key购买 nike

我有一个java类,如下:

class A{
public static void main(String[] args){
int a=10;
a*=a++ +a;
System.out.println(a);
}
}

Output:210

在我看来,输出应该是231,计算如下:

a*=10+11;
a*=21;
a=a*21;
a=11*21;
a= 231;

谁能解释一下我错在哪里以及为什么?

最佳答案

在任何类型的语句中:

x *= y;

LHS 的初始值在 RHS 之前计算。所以你的陈述:

a *= a++ + a;

相当于:

a = a * (a++ + a);

将 a 设置为值 10 * (10 + 11) => 210。

如果您对与这一点相关的正式规范特别感兴趣,您可以找到它 here其中包含规则“如果运算符是复合赋值运算符(第 15.26.2 节),则左侧操作数的求值包括记住左侧操作数表示的变量以及获取并保存该变量的值以供使用在隐含的二元运算中。”

关于java - 了解算术表达式的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28103561/

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