gpt4 book ai didi

java - 为什么 c += 5 编译而不是 c = c + 5?

转载 作者:行者123 更新时间:2023-12-04 15:56:21 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Why don't Java's +=, -=, *=, /= compound assignment operators require casting?

(11 个回答)


20 小时前关闭。




为什么当我们输入:

char c = 'A';
c += 5;
我们没有错误,但是当我们输入:
char c = 'A';
c = c + 5;
我们得到一个错误。我无法理解这是如何发生的,因为在我看来,这两个是相同的陈述。

最佳答案

+= , -=等运算符在 Java 中称为“复合赋值”。它们的语义包括 转换到目标类型 .
Oracle docs对此非常清楚:

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.

For example, the following code is correct:

   short x = 3;
x += 4.6;

and results in x having the value 7 because it is equivalent to:

   short x = 3;
x = (short)(x + 4.6);


在您的示例中, c += 5;相当于 c = (char)(c + 5);

关于java - 为什么 c += 5 编译而不是 c = c + 5?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70100260/

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