C++ 为什么std::cout<&书信电报;主<&书信电报;std::endl打印1? #包括 int main(){ std::cout
您的程序格式不正确。N4140: §3.6.1/3功能C++ 为什么std::cout<&书信电报;主<&书信电报;std::endl打印1? #包括 int main(){ std::cout,c++,C++,您的程序格式不正确。N4140: §3.6.1/3功能main不得在程序中使用。[…] 如果我们假装程序不是格式错误,最可能的解释是标准转换: §4.3/1函数类型T的左值可转换为 键入“指向T”结果是指向函数的指针 §4.12/1算术、非范围枚举、指针或 指向成员类型的指针可以转换为类型为bool.a的prvalue 不支持零值、空指针值或空成员指针值 转换为false;任何其他值都转换为true 直接初始化(8.5),可以使用类型为std::nullptr\u t的PR值 转换为类型为boo
main
不得在程序中使用。[…]
如果我们假装程序不是格式错误,最可能的解释是标准转换:
§4.3/1函数类型T
的左值可转换为
键入“指向T
”结果是指向函数的指针
§4.12/1算术、非范围枚举、指针或
指向成员类型的指针可以转换为类型为bool
.a的prvalue
不支持零值、空指针值或空成员指针值
转换为false
;任何其他值都转换为true
直接初始化(8.5),可以使用类型为std::nullptr\u t
的PR值
转换为类型为bool
的PR值;结果值为false
如果您坚持这样做,请尝试:
#include <iostream>
int main(){
std::cout << main << std::endl;
return 0;
}
std::cout出于好奇,您希望此代码打印什么?在本例中,main是一个函数指针。@JonathonReinhart:是吗?记住main
是特殊的……这可能是未定义的行为。您不能命名main。请参阅。您不允许在程序中使用main
。它仍将打印1
f或者普通函数的名称,因为函数指针被隐式转换为bool
。相关:函数指针将被转换为bool。不要忘记在我看到的main
中,std::ostream
没有的部分被多次使用times@L那是c。我没有看到任何标准的引文哦,远说它在C中是不正确的。
std::cout << (void*)main << std::endl;