1

可能重复:
双重比较

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 为什么编译器error在使用时不给出(0<=x<=9)

4

1 回答 1

4

在 C 中,布尔值只是普通整数。在布尔上下文中,0为假,所有其他值为真。在这种情况下,

(0 <= x <= 9)   ==
((0 <= x) <= 9) == // the (0 <= x) evaluates to 0, which is false in boolean context
(0 <= 9)        ==
1 (true)
于 2012-10-30T05:56:53.047 回答