今天我们编写了一段需要 C++14 或 C++17 的代码。我的同事使用C++Builder进行代码编辑,也想尝试用它来编译代码片段。
我们找不到制定 C++ 语言标准的设置。我们通过谷歌搜索发现,C++builder 有一个仅支持部分 C++11 的“经典编译器”和一个最高支持 C++17 的“基于 clang 的编译器”。我们在项目设置中找到了用于启用/禁用“经典编译器”的复选框,但没有用于显式选择语言标准(在 C++14 和 C++17 之间切换)的项目设置。有这样的事吗?在哪里?
我们拥有的版本是 C++Builder 10.2。
我们还尝试为基于 clang 的编译器显式设置附加编译器选项 -std=c++14,但该选项被拒绝(“未知值 c++14”)。
我在这篇关于单精度浮点数的维基百科文章中发现了以下声明https://en.wikipedia.org/wiki/Single-precision_floating-point_format:
如果将 IEEE 754 单精度数转换为至少有 9 位有效数字的十进制字符串,然后再转换回单精度表示,则最终结果必须与原始数匹配。
我试图找到单精度浮点数的例子,它们实际上需要 9 个有效的十进制数字,并且还没有明确的只有 8 个有效数字并且没有找到任何,例如通过在 gdb 调试器中打印浮点值或通过尝试将不同的值转换为八度的单精度,但还没有发现需要超过 8 个十进制数字才能具有与其直接相邻浮点值不同的十进制表示的示例。
问题是,实际上是否存在需要 9 位十进制数字的单精度(32 位)浮点值,或者这只是一个永远不需要的安全上限。你能举一个单精度浮点值的例子,当它转换为只有 8 个有效十进制数字,然后转换回二进制浮点表示时,它的值与原始浮点数不同。