【发布时间】:2019-12-03 14:51:51
【问题描述】:
我现在正在练习 lambda 表达式,我做的这个程序是获取一个主题的加权平均值,第一个 lambda 表达式 'get_avg' 是获取数据,而过程是 'sum_avg',当 sum_avg 运行时输出 '-nan(ind)',这不是我想要的答案。
#include<iostream>
#include<thread>
using namespace std;
int main() {
float m = 0, w = 0;
auto get_avg = [](float m, float w) {
cout << "ENTER THE GRADE: ";
cin >> m;
cout << "ENTER THE UNITS: ";
cin >> w;
return m, w;
};
get_avg(m, w);
auto sum_avg = [](float m,float w){
cout << "THE WEIGHTED AVERAGE IS :" <<m*w/w << endl;
};
sum_avg(m,w);
system("PAUSE");
return 0;
}
【问题讨论】:
-
另外,在 C++ 中,您不能从函数返回多个值。
return m, w;行的行为与return w一样,因为m, w表达式使用逗号运算符,它只返回其右操作数。 (作为参考,在较新的标准中你可以使用结构化绑定的东西,但我现在不推荐它) -
这个例子有点哲学上的难题。您有一个未命名的函数 (lambda),您将其命名为
get_avg。那为什么不使用普通的(命名的)函数呢? -
@MSalters
get_avg只存在于main的范围内(在这种情况下不是很好的理由)