This question already has answers here:
Comparing a variable to a range of values
(7个答案)
12个月前关闭。
以下代码看起来很简单。我不明白为什么它不起作用。
C++ stackoverflow向导可以过来救我吗?
相当于
第一个子表达式
因此,你有
在此结果表达式中,由于积分提升, bool(boolean)
因此,条件的最终值为
从C++ 17标准(8.9关系运算符)开始
(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