我发现java编译具有关于使用int和float的赋值和自赋值语句的非预期行为。java运算符中的隐式转换+ =
以下代码块说明错误。
int i = 3;
float f = 0.1f;
i += f; // no compile error, but i = 3
i = i + f; // COMPILE ERROR
在自赋值
i += f
编译不会发出一个错误,但exaluation的结果与价值3
一个int,变量i
保持价值3
。在
i = i + f
表达式编译器将发出错误与“错误:可能的精度损失”消息。
有人可以解释这种行为。
编辑:我已经张贴了这个代码块中https://compilr.com/cguedes/java-autoassignment-error/Program.java
完成。您可以在Java Language Specification中找到解释。它免费在线提供。 –
为了公平起见,“第5章转换和促销”是我在这个问题陷入困境之前所看到的,第15章甚至不会在第一页上显示寻找“Java隐式缩小转换”。没有找到信息不一定是不搜索的迹象,你的评论没有任何帮助 –