控制台打印时间功能产生1

时间:2018-09-24 12:01:35

标签: c++ language-lawyer function-pointers implicit-conversion ctime

几个开发人员,我想知道为什么:

std::cout<<std::time<<std::endl;

打印出一个值1。该值代表什么,以及为什么值为1。

答案: How to print function pointers with cout?

C ++标准指定:

  

4.12布尔转换

     

1算术,枚举,指针或成员指针的右值   类型可以转换为bool类型的右值。

匿名引用:

  

这是为函数指针指定的唯一转换。

编辑:以下答案很好地介绍了为什么打印1而不是仅打印任何布尔值的解决方案,并解释了何时不会出现1。

1 个答案:

答案 0 :(得分:3)

cppreference说:

  

指向非静态成员的指针没有指向的重载。   volatile或函数指针(带有签名的指针除外)   (10-12)重载所接受)。尝试输出此类对象   调用隐式转换为bool,并且对于任何非null指针   值,则打印值1(除非设置了boolalpha,在这种情况下   则显示为true。

因此,您将函数指针std::time转换为bool,并且总是true且没有boolalpha将输出设置为1