isnan返回一个 int nonzero value if arg is NaN, 0 otherwise
... 为什么它不返回一个布尔值?这不是一些遗留的东西,它是 C++11 的新东西。
问问题
1057 次
2 回答
6
它是遗留的东西,可以在 中找到,这是放入命名空间<cmath>
的 C 标准库。C 没有本机类型。1<math.h>
std
bool
虽然这些确实是 C++11 的新增内容,但它们本质上是在引入<math.h>
C99 中添加的内容。
1.对于那些要抱怨的人来说,C99
bool
实际上是一个宏。有一个_Bool
,但我猜 C99 作者选择不将它用于isnan
等人。为了保持与<math.h>
.
于 2012-07-13T19:38:58.537 回答
0
为了澄清,isnan、isinf 在 C99 中作为宏添加为 int 表达式。因此,为了 C 兼容性,将它们添加为返回 int 的函数是有意义的。
http://www.cplusplus.com/reference/cmath/isnan/
C99 C++11
在 C 中,这被实现为一个返回 int 值的宏。x 的类型应为 float、double 或 long double
于 2019-02-19T07:28:10.410 回答