C 关系运算符 if-else

-2 c if-statement relational-operators

    #include<stdio.h>
int main()
{
    int n=2500;
    if(0<n<1000){
        printf("no\n");
    }
    else{
        printf("yes\n");
    }
    int x=2500;
    if(n>0 && n<1000){
        printf("no\n");
    }
    else{
        printf("yes\n");
    }
}
Run Code Online (Sandbox Code Playgroud)

n 的 if-else 应该打印“是” 但输出是“否”
为什么0<n<1000不起作用

dbu*_*ush 6

这个表达式并不像你想象的那样:

0<n<1000
Run Code Online (Sandbox Code Playgroud)

C 运算符没有“之间”的概念。上面实际上解析为:

(0<n)<1000
Run Code Online (Sandbox Code Playgroud)

因此,首先会0<n进行评估,结果为 0 或 1。然后将检查结果与 1000 进行比较,即其中一个0<10001<1000两个为真,因此条件将始终为真。

您需要将比较分开,如下所示:

if (0<n && n<1000) {
Run Code Online (Sandbox Code Playgroud)