我正在与一位使用旧版本 GCC(准确地说是 3.2.3)但想升级的客户合作,而被认为是升级到新版本的绊脚石的一个原因是大小差异float_t
类型,果然是正确的:
在 GCC 3.2.3 上
sizeof(float_t) = 12
sizeof(float) = 4
sizeof(double_t) = 12
sizeof(double) = 8
在 GCC 4.1.2 上
sizeof(float_t) = 4
sizeof(float) = 4
sizeof(double_t) = 8
sizeof(double) = 8
但造成这种差异的原因是什么?为什么尺寸变小了,什么时候应该和不应该使用 float_t
或 double_t
?
最佳答案
使用 float_t 的原因是对于一些使用更大类型的处理器和编译器,例如long double for float 可能更有效,因此 float_t 允许编译器使用更大的类型而不是 float。
因此在使用 float_t 的 OP 情况下,大小的变化是标准允许的。如果原始代码想要使用较小的浮点大小,则应该使用 float。
open-std doc 中有一些理由
for example the type definitions float_t and double_t (defined in <math.h>), are intended to allow effective use of architectures with more efficient, wider formats. Annexes
关于c - float_t 有什么意义,什么时候应该使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5390011/