【发布时间】:2014-10-02 07:00:45
【问题描述】:
在阅读book about 3D graphics 的一部分时,我遇到了以下作业:
const float vertexPositions[] = {
0.75f, 0.75f, 0.0f, 1.0f,
0.75f, -0.75f, 0.0f, 1.0f,
-0.75f, -0.75f, 0.0f, 1.0f,
};
为什么需要 f 后缀?文字的类型不能从变量的类型中确定吗?我相信没有 f 浮点文字被解释为双精度数,但是为什么当数组显然是浮点类型时呢?
【问题讨论】:
-
我相信这是因为代码是如何编译的,编译器在知道数组类型之前就知道了字面量。
-
使用 GCC 而没有
f我没有收到任何错误。 -
最好还是添加
f。 -
在某些编译器上,ASSERT(1.1 != 1.1f);
-
@franji1 大多数编译器都这样。您只需要
float成为 IEEE 754 binary32 和double成为 binary64,因为它们几乎无处不在。 blog.frama-c.com/index.php?post/2011/11/08/Floating-point-quiz
标签: c floating-point assign