我在查看浮点文字的 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/