为什么isnan,isinf和isfinite返回int而不是bool?

Dav*_*vid 2 c++ floating-point nan infinite c++11

isnan返回一个int ... nonzero value if arg is NaN, ?0? otherwise.为什么不回归布尔?这不是一些传统的东西,它是C++ 11的新功能.

Oli*_*rth 5

遗留的东西,可以在<cmath>其中找到,这是<math.h>放入std命名空间的C标准库.C没有本机bool类型.1

虽然这些都是C++ 11的添加,但它们实际上是<math.h>在C99 中添加的东西.


对于那些即将投诉的人来说,C99 bool实际上是一个宏观.有一个_Bool,但我想C99作者选择不使用它isnan 等.为了保持与其他东西的一致性<math.h>.

  • C99的类型_Bool不是宏,因为_Bool是C99关键字. (2认同)
  • 然后关于bool的评论没有任何意义.isnan可以返回_Bool(或bool,它是_defined到_Bool).我认为它之所以不是因为C99 isnan是基于更早的非标准定义,其中真的没有bool类型. (2认同)