为什么cout<<main;
在我的计算机上打印1
?我以为它会打印主要的地址。但是当我使用printf("%x",main);
时,我会得到不同的输出。
编辑:
我尝试了std::cout
其他功能。我为每个案件得到1
。
答案 0 :(得分:6)
这只是undefined behavior
。它是行为不可预测的代码示例。
答案 1 :(得分:3)
void foo(){};
cout << foo << endl;
函数指针将转换为bool
,除非像这样使用它:
cout << reinterpret_cast<void*>(foo) << endl;
编辑:这是未定义的行为,main
不能像其他函数指针一样使用。
C ++ 11(ISO / IEC 14882:2011)§3.6.1:主要功能
3函数main不得在程序中使用。 main的链接(3.5)是实现定义的。将main定义为已删除或将main声明为内联,静态或constexpr的程序是不正确的。名称main不以其他方式保留。 [示例:成员函数,类和枚举可以称为main,其他名称空间中的实体也可以称为main。 - 例子]