鉴于这个起点:
double y = readDoubleValue();
C++之间是否有任何显着差异:
int x = y;
和
int x = trunc(y);
我应该选择哪一个?如果其他人(包括我未来的自己):)读取我的代码,它看起来我用第二个更明确的事实,我确切知道我在做什么,但它需要一个库包含.
参考: C++中是否有trunc函数?
只需使用即可static_cast<int>(y)
获得您正在寻找的所有好处:
截断
铸造
为清晰起见明确转换.
我不会用的原因 trunc()
它并不常见,也许其他人阅读你的代码将不得不审查文档(这就是我做的原因,但同样,我不是专家)
你仍然使用隐式转换,trunc()
不返回int.
对我来说,这是不够明确的,在阅读完你的代码和文档后我问自己:"他是不是想要转换为int,或者你只是想要一个没有分数部分的浮动"
我可以想到一个或两个我希望摆脱小数部分的情况,但我仍然希望变量具有类型float
有几个原因,例如,我希望操作x + 0.1f
保存小数部分.所以我仍然怀疑你的意图,也许你不是指隐含的转换.
或者你可以在旁边放一点评论int x = y; // yes, I know what I'm doing
.
这也将提供您所需的清晰度.