请看下面这段代码
输出是:
-30.912
4.81036e+009
为啥呢?因为类型转换的问题,前面都是uint32_t类型来计算,因此一旦小于0,就会出现一个很大的数,最终导致的结果也不是预期的,而一开始就用0.0f的话,事实上是将所有的数字都变成了float,它可以表示很大的数,因此不会出错。
C++类型转换陷阱
本文通过一个具体的C++代码示例解释了整数溢出及类型转换问题,展示了当使用不同数据类型进行数学运算时可能出现的意外结果,并提出了使用浮点数初始化变量以避免此类问题的方法。
请看下面这段代码
输出是:
-30.912
4.81036e+009
为啥呢?因为类型转换的问题,前面都是uint32_t类型来计算,因此一旦小于0,就会出现一个很大的数,最终导致的结果也不是预期的,而一开始就用0.0f的话,事实上是将所有的数字都变成了float,它可以表示很大的数,因此不会出错。

被折叠的 条评论
为什么被折叠?