This question already has answers here:
g++ “calling” a function without parenthesis (not f() but f; ). Why does it always return 1?

(2个答案)


上个月关闭。



#include <iostream>

int returnFive()
{
   return 5;
}

int main()
{
   std::cout << returnFive << '\n';
   return 0;
}
由于编译过程没有错误,因此系统如何确定实际发送并打印到控制台的值?

最佳答案

想象一下编写的代码是否类似于

if(returnFive)
  returnFive();
在这里,期望编译器检查returnFive的函数指针是否为nullptr
此处的编译器将函数指针评估为 bool(boolean) 表达式(是否为NULL),并输出输出。
https://godbolt.org/z/Psdc69。您可以检查cout是否传递了(bool)

08-27 02:09