我如何知道编译器支持哪些标准格式?

时间:2011-06-10 10:50:23

标签: c++ c++11 standards

我知道一种格式是“IEEE 754浮点标准”

检查C ++编译器是否使用IEEE 754浮点标准

 std::numeric_limits<float>::is_iec559;

还有哪些其他标准格式?
如何检查C ++编译器是否遵循该格式?

编辑:有多少种格式?这些是什么 ?就c ++语言而言

2 个答案:

答案 0 :(得分:4)

你没有,numeric_limits在设计时考虑到了IEEE 754。您只需了解实现是否符合IEEE 754标准。

但请记住,您应该使用has_infinityhas_quiet_NaN等来检查各个功能 - 基本上,您需要检查某些功能,而不是特定的浮点格式。

答案 1 :(得分:2)

std::numeric_limits<double>::is_iec559上通常不是一个好主意,因为使用g ++,即使你的代码是用fastmath选项编译的,也是如此,例如不支持IEEE 754 NaN行为(它主要只是二进制级兼容表示)。

即,实际上is_iec559并未告诉您实现是否符合IEEE 754标准。

所以,你需要特定于编译器的方法。

干杯&amp;第h。,

相关问题