1

为什么在我的电脑上cout<<main;打印1?我以为它会打印main的地址。但是当我使用时,printf("%x",main);我会得到不同的输出。

编辑:

我尝试std::cout了其他功能。我得到1了每一个案例。


它不过是undefined behavior。这是行为不可预测的代码示例。

4

2 回答 2

6

它不过是undefined behavior。这是行为不可预测的代码示例。

于 2013-07-12T17:04:16.123 回答
4
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 声明为 inline、static 或 constexpr 的程序是格式错误的。名称 main 没有保留。[ 示例:成员函数、类和枚举可以称为 main,其他命名空间中的实体也可以。—结束示例]

于 2013-07-12T17:07:54.780 回答