原来C++里未注明的浮点数被解释为double类型

最近读了一个SIMD优化过的代码, 里面大片使用了static_cast<>和reinterpret_cast<>. 对这两个函数的具体区别不是很理解, 于是上网研习了一下. 随便了解到一个之前一直忽略的问题, 就是C++中, 以浮点数形式出现的常量, 在结尾未注明 f 时会被解释为double类型.

可以参考这篇文章.

上面这篇文章中指出, 正确的进行两个整数除法并得到浮点数解的方式是

int a = 10;
int b = 3;
double c = static_cast<double>(a) / b;

其实以前遇到这种情况, 我都是在a前面乘以一个1.0, 或者用(double)把a强制转换为浮点数类型. 用各种cast而不是C-style的强制类型转换, 有一些好处, 这里有一个挺有意思的讨论.

发布了73 篇原创文章 · 获赞 24 · 访问量 13万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览