【发布时间】:2013-11-25 07:28:38
【问题描述】:
我之前遇到过一种情况,我尝试了以下两段代码:
int score = 100;
score = score * 1.05;
和
int score = 100;
score *= 1.05;
第一个失败(显然,我试图将浮点数隐式转换为 int)。但第二个工作得很好。编译器没有抱怨,我也没有收到任何运行时错误。为什么第二个有效,而第一个无效?据我所知,x *= y 只是x = x * y 的简写。
【问题讨论】:
-
类似问题,但对于
+=:stackoverflow.com/questions/8710619/java-operator 简而言之score *= 1.05工作正常,因为它与score = (int)(score * 1.05)相同 -
你用的是什么编译器?我刚刚在 Visual Studio 2005 上尝试过(是的,我仍在使用它,尤其是在工作中哈哈),它工作得很好。只给了我一个关于从 double 转换为 int 的警告,但仍然运行良好。
-
@Pshemo 啊哈,谢谢!在侧边栏中没有看到任何相关的弹出窗口,所以我以为我是第一个提出这个问题的人。
标签: java casting compilation compiler-errors