C++17 十六进制浮点文字单精度后缀冲突?

标签 c++ floating-point hex c++17 literals

我在查看浮点文字的 C++17 规范时发现了一个问题。如何区分单精度数字 F 和后缀 F

例如,文字 0x1p0F 是转换为 double 32768.0L 还是单精度 1.0F

规范说后缀是可选的,没有后缀表示 double ,因此,如所写,存在明确的歧义。

最佳答案

十六进制 float 必须使用 p 指数。指数是使用非十六进制数字(表示要应用于 2 的指数的十进制整数)定义的。因此,它不能包含“A-F”字符。所以没有歧义。 0x1p0F 的指数为“0”,类型为 float

关于C++17 十六进制浮点文字单精度后缀冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52794653/

相关文章:

c++ - 带有子类的类的纯接口(interface)

r - 这里的浮点精度是怎么回事?

c++ - 如何使用 enable_if 为数字和非数字选择不同的函数?

php - 在有限资源上开发服务器的最合适方法

c++ - 将整数存储为 float

c++ - 将值为 0.0f 的 float 转换为 boolean 值是否安全?

java - char '0x8' 这是什么字符?

java - 在 postgresql 中存储图像

ruby - 如何打印带有前导零的十六进制数字

c++ - Linux 系统不允许创建套接字,因为 "Too many open files"*即使在重新启动后*