#include <iostream>
int main(){
std::cout << main << std::endl;
return 0;
}
为什么在命令行中打印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;