【发布时间】:2013-03-21 22:07:26
【问题描述】:
我遇到了以下令人惊讶的线路:
int x = 7;
x += 0.5;
显然是合法的语法!添加之后,x 仍然是 7,所以 double 被强制转换为 int 并向下舍入为 0,但这是在代码中没有任何显式强制转换的情况下完成的。其他人对此感到惊讶吗?这里的理由是什么?
编辑以澄清我的问题:谁能给出这个决定的充分理由?要求在其他任何地方进行显式强制转换,这让我觉得这是一个糟糕的决定,但是在语言中有一个地方可以让你默默地丢弃数据。我错过了什么吗?
【问题讨论】:
-
有趣。我确信JLS 解决了这个问题。你有没有看它说什么?
-
@Hovercraft:JLS 给出了规范,但没有给出决定的理由,这就是我要问的。