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

Dav*_*yan 6 c++

#include <iostream>

int main(){
    std::cout << main << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

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

小智 5

你的程序格式不正确.N4140:

§3.6.1/ 3该功能main不得在程序中使用.[...]

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

§4.3/ 1函数类型的左值T可以转换为"指向T" 的类型的prvalue .结果是指向函数的指针.

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

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

std::cout << (void*)main << std::endl;
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

663 次

最近记录:

10 年,11 月 前