比较运算符的行为是什么?

时间:2012-10-30 05:50:20

标签: c++ c comparison operators

  

可能重复:
  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)的原因

1 个答案:

答案 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)