为什么std :: cout<< main<< std :: endl打印1?

时间:2015-02-22 16:39:43

标签: c++

#include <iostream>

int main(){
    std::cout << main << std::endl;
    return 0;
}

为什么在命令行中打印1?

1 个答案:

答案 0 :(得分:5)

您的计划格式不正确。 N4140:

  

§3.6.1/ 3函数main不得在程序中使用。 [...]

如果我们假装程序不是格式错误,最可能的解释是标准转换:

  

§4.3/ 1函数类型T的左值可以转换为prvalue   输入“指向T的指针”。结果是指向函数的指针。

     

§4.12/ 1算术,无范围枚举,指针或者的prvalue   可以将指向成员类型的指针转​​换为bool类型的prvalue。一个   零值,空指针值或空成员指针值是   转换为false;任何其他值都将转换为true。对于   直接初始化(8.5),类型为std::nullptr_t的prvalue可以   转换为bool类型的prvalue;结果值为false

如果您坚持这样做,请尝试:

std::cout << (void*)main << std::endl;