gpt4 book ai didi

c - 为什么十六进制 float 需要指定指数?

转载 作者:太空狗 更新时间:2023-10-29 14:58:57 26 4
gpt4 key购买 nike

我现在正在学习编程语言(BNF、扫描器等),C 中的十六进制浮点常量需要指数似乎很奇怪。

来自C99标准,

§6.4.4.2 float 常量

hexadecimal-floating-constant:  
hexadecimal-prefix hexadecimal-fractional-constant
binary-exponent-part floating-suffix[opt]
hexadecimal-prefix hexadecimal-digit-sequence
binary-exponent-part floating-suffix[opt]

编写一个扫描器来解析带有可选指数的十六进制浮点常量似乎很容易。为什么 C 标准使指数对于十进制 float 是可选的,而对于十六进制 float 是必需的?

最佳答案

这包含在 C99 Rationale 中, 第 6.4.4.2 节:

A new feature of C99: C99 adds hexadecimal notation because it more clearly expresses the significance of floating constants. The binary-exponent part is required, instead of optional as it is for decimal notation, to avoid ambiguity resulting from an f suffix being mistaken as a hexadecimal digit.

例如,1.0ffloat 类型的十进制浮点常量,但是 0x1.0f 会产生歧义,并且必须写成0x1.0p0f

出于同样的原因,指数由p而不是e引入,因为e是一个有效的十六进制数字。

关于c - 为什么十六进制 float 需要指定指数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24288691/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com