代码之家  ›  专栏  ›  技术社区  ›  dstackflow

将时间函数打印到控制台产生1[副本]

  •  0
  • dstackflow  · 技术社区  · 6 年前

    一些开发人员和我想知道为什么:

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

    打印出值1。值代表什么,为什么值是1。

    对发生的事情的回答: How to print function pointers with cout?

    C++标准规定:

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

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

    编辑:下面的答案很好地给出了1为什么被打印而不是任何bool的解决方案,并解释了1何时不会出现。

    1 回复  |  直到 6 年前
        1
  •  3
  •   Öö Tiib    6 年前

    cppreference 他说:

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

    std::time bool 而且总是这样 true boolalpha 将输出设置为 1 .