我遇到了以下令人惊讶的一行:
int x = 7;
x += 0.5;
显然是合法的语法!加法之后,x 仍然是 7,因此 double 被转换为 int 并向下舍入为 0,但这是在代码中没有任何显式转换的情况下完成的。还有人对此感到惊讶吗?这里的理由是什么?
编辑以澄清我的问题:任何人都可以给出这个决定的充分理由吗?在我看来,在其他地方都要求显式转换是一个可怕的决定,但在语言中却有一个地方可以让你默默地丢弃数据。我错过了什么吗?
x += 0.5;
相当于:
x = (int) (x + 0.5)
一般来说:
x += y
相当于x = (type of x) (x + y)
See 15.26.2。复合赋值运算符
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)