【问题标题】:+= int and double conversion [duplicate]+= int 和 double 转换 [重复]
【发布时间】:2011-02-23 17:18:55
【问题描述】:

可能重复:
Varying behavior for possible loss of precision

int testing = 0;
testing += 2.0

上面的代码编译好了。

在哪里

int testing = 0;
testing = testing + 2.0;

此代码无法编译。知道为什么吗?

【问题讨论】:

    标签: java


    【解决方案1】:

    复合赋值在 Java 中具有隐藏类型。

    JLS 15.26.2 Compound Assignment Operators:

    E1 op= E2 形式的复合赋值表达式等价于 E1 = (T)((E1) op (E2)),其中 TE1 的类型,除了 E1 只计算一次。

    例如下面的代码是正确的:

    short x = 3;
    x += 4.6;
    

    并导致x 具有值7,因为它相当于:

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

    相关问题

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      • 2021-08-14
      • 2012-02-05
      • 1970-01-01
      • 2015-10-15
      相关资源
      最近更新 更多