gpt4 book ai didi

c++ - lambda 始终返回 '1'

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:54:07 24 4
gpt4 key购买 nike

有这样的代码

#include <iostream>
using namespace std;
int main()
{
cout<<[](){ return 0;};
cout<<[](){ return 3.2;};
cout<<[](){ return true;};
cout<<[](){ return false;};
cout<<[](){ return "Hello world!";};
cout<<[]()->int{ return 0;};
cout<<[]()->double{ return 3.2;};
cout<<[]()->bool{ return true;};
cout<<[]()->bool{ return false;};
cout<<[]()->const char*{ return "Hello world!";};
return 0;
}

gcc version 4.8.2 编译它,我的输出只有 1111111111。为什么只有“1”?

最佳答案

当 lambda 表达式没有捕获时,它可以隐式转换为函数指针。

反过来,函数指针可以隐式转换为 bool , 产生 true如果指针不为空,则打印出来。

如果你cout << std::boolalpha在你的输出之前,you'll see truetruetrue.... printed instead .

如果您在 lambda 中捕获了一些东西,那么它就不再可以转换为函数指针,并且 you'd get a compiler error .

如果你想打印调用lambda返回的结果,那么你需要() ,正如其他人指出的那样。

关于c++ - lambda 始终返回 '1',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28273891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com