可能重复:
Double comparison
int x=-1;
if(0<=x<=9)
std::cout<< "Without Logical operator";
if (0<=x && x<=9)
std::cout<< "With Logical operator";
我知道第二if
它工作正常。
在if
条件下,这里发生了什么。除了if
x
之外,它位于第1 -1
内
以及编译器在使用error
(0<=x<=9)
的原因
答案 0 :(得分:4)
在C中,布尔值只是普通整数。在布尔上下文中,0
为false,所有其他值均为true。在这种情况下,
(0 <= x <= 9) ==
((0 <= x) <= 9) == // the (0 <= x) evaluates to 0, which is false in boolean context
(0 <= 9) ==
1 (true)