为什么 std::cout << main << std::endl 打印 1? [复制]

2023-12-29

#include <iostream>

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

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


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

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

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

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

§4.12/1 算术、无作用域枚举、指针或 指向成员类型的指针可以转换为类型的纯右值bool。 A 零值、空指针值或空成员指针值是 转换成false;任何其他值都会转换为true。为了 直接初始化 (8.5),类型的纯右值std::nullptr_t可 转换为类型的纯右值bool;结果值为false.

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

std::cout << (void*)main << std::endl;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 std::cout << main << std::endl 打印 1? [复制] 的相关文章

随机推荐