鉴于这个起点:
double y = readDoubleValue();
C ++之间是否有任何显着差异:
int x = y;
和
int x = trunc(y);
我更喜欢哪一个?如果其他人(包括我未来的自己:))读取我的代码,它在我看来,第二个更明确的事实是我确切地知道我在做什么,但是它需要包含库。
答案 0 :(得分:5)
只需使用static_cast<int>(y)
即可获得您正在寻找的所有好处:
我不会使用trunc()
trunc()
不返回int。我可以想到一个或两个我希望摆脱小数部分的情况,但我仍然希望变量具有类型float
有几个原因,例如,我想要操作{{1}保存分数部分。
所以我仍然怀疑你的意图,也许你不是指隐含的转换。
或您可以在其旁边添加一些评论x + 0.1f
。
这也将为您提供所需的清晰度。
答案 1 :(得分:0)
IMO你不应该。 truncate是为浮点类型定义的函数。它不会将类型更改为整数类型。
int x = y;
在这里你说你正在为int变量分配一些东西
int x = trunc(y);
在这里你说你出于任何原因放弃了小数部分,然后转换
在我看来,用例非常不同。
为什么我不鼓励在转换前使用trunc
。可能偏好我,实际上在这种用例中它是一种混淆。