1

重複の可能性:
二重比較

int x=-1;
if(0<=x<=9)
        std::cout<< "Without Logical operator";
if (0<=x && x<=9)
    std::cout<< "With Logical operator";

私は2番目について知ってifいます。ここで 1 番目のif条件で何が起こっているのか。それは1番目の中に入りますそして、使用時にifコンパイラー が与えない理由x-1error(0<=x<=9)

4

1 に答える 1

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)
于 2012-10-30T05:56:53.047 に答える