C++:lambda函数和捕获列表的问题
C++: Issue with lambda function and capture list
我有以下功能:
double mn = 2.0;
double mx = 5.0;
auto isBetween = [&,mx,mn](double y) -> bool{
if (mn<y<mx) {
return true;
} else {
return false;
}
};
但是,当我调试时,我作为double y
传递的所有值都返回true。
我缺了什么吗?
您的测试if (mn<y<mx)
不是您想要的。
你想要的是:if (mn < y && y < mx)
。
在C++中,<
运算符不能像数学中那样链式。在表达式(mn < y < mx)
中,(mn < y)
的计算结果为1(true)或0(false),由此表达式等效于1 < mx
或0 < mx
。
您的问题在这里(mn<y<mx)
,可以读取为
(mn < y) < mx
这意味着,第一个mn < y
被评估,这导致类型为bool
的结果,并且是ture
或false
。最后将结果与CCD_ 14进行了比较。
您试图做的是检查,如果mn < y
和y < mx
,则必须这样表示:
if (mn<y && y<mx)
相关文章:
- 在没有参数列表的情况下使用模板名称"Event"无效,模板问题
- C++关于ENUM的问题。我得到的响应比枚举列表大
- 替代在python中制作邻接列表与图形问题的字典?(如 C++ 中的 vector<vector<int&g
- 在C++中循环访问自定义结构列表的小问题
- 关于Stroustrup C++书的自动和{}列表问题
- 将值推送到 getter 函数调用的列表中时出现问题
- 使用初始化列表填充C++中的多维结构数组时出现问题
- 在 c++ 中访问列表向量时出现问题
- 有关具有编译错误的操纵列表的问题
- C++:继承和列表函数作为类成员的问题
- C++ 入门加列表:10.9 "顶部"指针问题
- STL链接列表问题
- 初始化列表问题
- DirectX 12-命令列表问题
- CreateHwndRenderTarget参数列表问题
- 初始化列表问题,重点是STD向量
- c++初始化列表问题-错误:试图引用已删除的函数
- 特定于对象的数组列表C++问题
- 模板参数列表问题太少
- 又是一个c++列表问题