isnan返回一个int ... nonzero value if arg is NaN, 0 otherwise
。为什么不回归布尔?这不是一些传统的东西,它是C ++ 11的新功能。
答案 0 :(得分:5)
是遗留内容,这些内容可以在<cmath>
中找到,这是放入<math.h>
命名空间的C标准库std
。 C没有原生bool
类型。 1
虽然这些都是C ++ 11的添加,但它们实际上是在C99中添加到<math.h>
的内容。
<小时/> <子> 1。对于那些即将抱怨的人来说,C99的
bool
实际上是一个宏。有一个_Bool
,但我想C99作者选择不将其用于isnan
等,以保持与<math.h>
中其他内容的一致性子>
答案 1 :(得分:0)
为澄清起见,在C99中将isnan,isinf作为宏添加为int表达式。因此,为了实现C兼容性,将它们添加为返回int的函数是很有意义的。
http://www.cplusplus.com/reference/cmath/isnan/
C99 C ++ 11
在C中,这被实现为返回int值的宏。的 x的类型应为float,double或long double