This question already has answers here:
Comparing a variable to a range of values

(7个答案)


12个月前关闭。




以下代码看起来很简单。我不明白为什么它不起作用。
float bound_min   = +314.53f;
float bound_max   = +413.09f;
float my_variable = -417.68f;

if (bound_min <= my_variable <= bound_max)
{
    printf("Why on earth is this returning True?");
}

C++ stackoverflow向导可以过来救我吗?

最佳答案

if语句中的条件

if (bound_min <= my_variable <= bound_max)

相当于
if ( ( bound_min <= my_variable ) <= bound_max)

第一个子表达式( bound_min <= my_variable )评估为 bool(boolean) 值false。

因此,你有
if ( false  <= bound_max)

在此结果表达式中,由于积分提升, bool(boolean) false被转换为整数0
if ( 0 <= bound_max)

因此,条件的最终值为true

从C++ 17标准(8.9关系运算符)开始


[Example: a<b<c means (a<b)<c and not (a<b)&&(b<c) —end example] .

关于c++ - 为什么以下不等式在C++中评估为true? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59207573/

10-12 23:15