【发布时间】:2018-09-24 12:01:34
【问题描述】:
我和几个开发人员想知道为什么:
std::cout<<std::time<<std::endl;
打印出一个值 1。这个值代表什么,为什么这个值是 1。
对发生的事情的回答: How to print function pointers with cout?
C++ 标准规定:
4.12 布尔转换
1 算术、枚举、指针或指向成员的指针的右值 type 可以转换为 bool 类型的右值。
引自匿名:
这是为函数指针指定的唯一转换。
编辑:下面的答案很好地展示了为什么打印 1 而不是任何 bool 的解决方案,并解释了何时不会出现 1。
【问题讨论】:
-
可能从函数指针转换为
bool。此处未调用std::time。 -
是的,我们有很多可能,但是当学习者提出要求时,我们希望得到一个明确的答案,而不是躲避子弹。
-
答案由 Vittorio Romeo 提供。你忘了
()。我希望它至少应该在普通编译器中调用警告。 -
看起来像,谢谢。完成/终止欺骗的程序是什么?
-
@dstackflow 有人会为你标记问题。
标签: c++ language-lawyer function-pointers implicit-conversion ctime