我和几个开发人员想知道为什么:
std::cout<<std::time<<std::endl;
打印出值 1。该值表示什么,以及为什么该值为 1。
对发生的事情的回答: 如何使用cout打印函数指针?
C++标准规定:
4.12 布尔转换
1 算术、枚举、指针或指向成员的指针的右值 类型可以转换为布尔类型的右值。
引用匿名者的话:
这是为函数指针指定的唯一转换。
编辑:下面的答案很好地提出了为什么打印 1 而不仅仅是任何布尔值的解决方案,并解释了何时不会出现 1。
cpp首选项说:
指向非静态成员的指针没有重载,指针指向 易失性指针或函数指针(带有签名的指针除外( 被 (10-12( 重载接受(。尝试输出此类对象 调用隐式转换为布尔值,并且对于任何非空指针 值,则打印值 1(除非设置了布尔阿尔法,在这种情况下 真被打印(。
因此,您会将函数指针std::time
转换为bool
并且始终true
没有boolalpha
将输出设置为1
。