首页 > 解决方案 > C++17十六进制浮点文字单精度后缀冲突?

问题描述

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

例如,文字是0x1p0F翻译成双精度32768.0L还是单精度1.0F

规范说后缀是可选的,并且没有后缀表示双精度,因此,正如所写的那样,存在一定的歧义。

标签: c++floating-pointhexc++17literals

解决方案


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


推荐阅读