【发布时间】:2012-09-28 09:47:15
【问题描述】:
当我在我的程序中初始化 float 变量时,我通常有如下向量:
Vector forward(0.f,0.f,-1.f),right(1.f,0.f,0.f),up(0.f,1.f,0.f)
(向量只是 3 个浮点数,例如 struct Vector{ float x,y,z; };)
这看起来 更容易阅读:
Vector forward(0,0,-1),right(1,0,0),up(0,1,0)
我必须使用floats 初始化我的float 变量吗?当我使用整数(或 doubles)初始化 float 时,我是否会丢失任何东西或招致某种惩罚?
【问题讨论】:
-
您不应该真正使用 Vector 作为结构名称,因为这很容易与 stl::vector 混淆。您可以改为将其命名为 vector3f 或 vector3d
-
在 FORTRAN 中,您必须使用适当的分配,因此零双精度必须是 0.0d0,而不是 0.0e0 或 0。很多以 FORTRAN 开头的人都被这种行为所困扰并明确地将 0 .f 在他们的 C++ 代码中。相比之下,C++ 实际上指定了如何将文字 0 或 1 提升为适当的浮点值。
-
我认为初始化不会是问题。但是,如果您进行比较,将使用更大的数据类型(0.0f 对 0.0),因此它往往会更慢。显然取决于用例,但没有使用正确的类型,您肯定会导致转换。编译时或运行时。避免它可以节省时间。
标签: c++ variables initialization