You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

输出不带()的函数名为何未报错反而打印1?C++代码疑问

问题原因解析

这段代码之所以打印出1而非报错,核心在于C++的函数名隐式转换规则:

  • 代码里的cout << res;中,res是函数名,在C++中,函数名会被隐式转换为指向该函数的指针(只要不是用于取地址、直接调用等场景)。
  • 标准库的ostream(即cout的类型)没有提供直接输出函数指针的重载,编译器会自动将函数指针转换为可匹配的bool类型:只要函数指针非空(这里res是有效的函数,指针显然不为空),就会被转成布尔值true。
  • C++中默认输出布尔值true时,会打印出1(如果想输出字符串true,需要先执行cout << boolalpha;开启对应格式)。

补充:如果想要调用函数并输出它的返回值,代码应该写成cout << res(任意整数参数);,这样才会执行res函数并输出返回的55。

内容的提问来源于stack exchange,提问作者أحمد خالد

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 06:03:07