繁体   English   中英

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 < mx0 < mx

您的问题在这里(mn<y<mx) ,可以理解为

(mn < y) < mx

这意味着, mn < y第一个mn < y进行求值,这将导致bool类型的结果,并且为turefalse 最后将结果与mx进行比较。

您尝试做的是检查mn < y y < mx ,必须这样表示:

if (mn<y && y<mx)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM