c - float_t 有什么意义,什么时候应该使用它?

标签 c gcc floating-point double

我正在与一位使用旧版本 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_tdouble_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/

相关文章:

python - 如何使用 gcc 编译和链接 python3 包装函数

c++ - 浮点比较精度

floating-point - scipy.optimize.minimize的精度

c - 指向 char 的指针,不同的术语

c - 在 C 中使用 system() 获取值

在本地临时目录中编译目标文件

c - 奇怪的数组初始化表达式?

c - 列表操作

c - 如何在C程序结束时自动打开.txt文件?

c - 判断一个数是否是整数?