我应该明确截断?

 筱白 发布于 2023-02-05 11:33

鉴于这个起点:

double y = readDoubleValue();

C++之间是否有任何显着差异:

int x = y;

int x = trunc(y);

我应该选择哪一个?如果其他人(包括我未来的自己):)读取我的代码,它看起来我用第二个更明确的事实,我确切知道我在做什么,但它需要一个库包含.

参考: C++中是否有trunc函数?

1 个回答
  • 只需使用即可static_cast<int>(y)获得您正在寻找的所有好处:

      截断

      铸造

      为清晰起见明确转换.

    我不会用的原因 trunc()

      它并不常见,也许其他人阅读你的代码将不得不审查文档(这就是我做的原因,但同样,我不是专家)

      你仍然使用隐式转换,trunc()不返回int.

      对我来说,这是不够明确的,在阅读完你的代码和文档后我问自己:"他是不是想要转换为int,或者你只是想要一个没有分数部分的浮动"

    我可以想到一个或两个我希望摆脱小数部分的情况,但我仍然希望变量具有类型float有几个原因,例如,我希望操作x + 0.1f保存小数部分.所以我仍然怀疑你的意图,也许你不是指隐含的转换.

    或者你可以在旁边放一点评论int x = y; // yes, I know what I'm doing.
    这也将提供您所需的清晰度.

    2023-02-05 11:36 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有