现代通用计算机的C11中FLT_RADIX是不是2?

Jac*_*ack 5 c floating-point c11

这几乎是我在标题中的问题.对于其他任何使用它似乎完全不自然.

在研究这个时,我发现有基础10的硬件支持的历史例子,以及IBM POWER6和系统z9的更现代的例子.即使在这些情况下,我也不知道FLT_RADIX在任何主流C编译器中是否会出现10.

我特别关注的是,我正在编写一个只能在通用计算机上运行的应用程序的代码,而且我想知道我是否可以在FLT_RADIX==2没有严重关注的情况下静态断言,就像我目前静态断言一样!(unsigned char)256.

R..*_*R.. 3

附件 F 是 C 标准的“可选”部分,对于使用浮点的任何严肃实现来说都是非可选的,它要求 和float分别为 IEEE 单精度和双精度(binary32 和 binary64) double,因此FLT_RADIX应始终为 2。支持新的十进制浮点数的系统,它是一个单独的扩展类型;FLT_RADIX==10不用于它。

  • 当前 IEEE 标准*还*定义了非二进制类型,但这些类型不是附录 F 中提到的类型。*F.2 类型*内容如下:“浮点类型与 IEC 60559 单格式相匹配。双精度类型与 IEC 60559 相匹配双格式。” 术语“单”和“双”来自标准的原始版本;这些格式后来被重命名为“binary32”和“binary64”。 (3认同)
  • @chux:IEEE 发布了很多标准。C11标准附录F中提到的是“*微处理器系统的二进制浮点算术,第二版*(IEC 60559:1989)” (3认同)