【发布时间】:2012-12-08 19:30:11
【问题描述】:
我发现 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中,编译不会报错,但计算的结果是一个值为3的int,变量i保持值3。在
i = i + f表达式中,编译器会发出错误消息并显示“错误:可能失去精度” 消息。
谁能解释一下这种行为。
编辑:我已经在https://compilr.com/cguedes/java-autoassignment-error/Program.java 中发布了这个代码块
【问题讨论】:
-
Java 语言规范是您可以找到解释的地方。它可以在线免费获得。
-
公平地说,“第 5 章。转换和促销”是我在遇到这个问题之前会(并且已经)看过的地方;第 15 章甚至没有出现在寻找“Java 隐式缩小转换”的第一页上。没有找到信息并不一定是不搜索的标志,您的评论没有任何帮助
标签: java compiler-errors implicit-conversion