我发现 java compile 在使用 int 和 float 的赋值和自赋值语句方面有一个非预期的行为。
以下代码块说明了该错误。
int i = 3;
float f = 0.1f;
i += f; // no compile error, but i = 3
i = i + f; // COMPILE ERROR
在自赋值
i += f
中,编译不会发出错误,但计算的结果是带有 value 的 int3
,并且变量i
保持 value3
。在
i = i + f
表达式中,编译器发出带有“错误:可能丢失精度”消息的错误。
有人可以解释这种行为。
编辑:我已经在https://compilr.com/cguedes/java-autoassignment-error/Program.java中发布了这个代码块