相关疑难解决方法(0)

java operator + =中的隐式转换

我发现java编译使用int和float有关于赋值和自赋值语句的非期望行为.

以下代码块说明了错误.

    int i = 3;
    float f = 0.1f;

    i += f;              // no compile error, but i = 3
    i = i + f;           // COMPILE ERROR
Run Code Online (Sandbox Code Playgroud)
  • 在自我赋值中i += f,编译不会发出错误,但是exaluation的结果是带有值的int 3,并且变量i保持该值3.

  • i = i + f表达式中,编译器发出错误"错误:可能丢失精度"消息.

有人可以解释这种行为.

编辑:我已在https://compilr.com/cguedes/java-autoassignment-error/Program.java中发布此代码块

java compiler-errors implicit-conversion

10
推荐指数
1
解决办法
1267
查看次数