-2
    #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");
    }
}

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

4

1 回答 1

6

这个表达式并没有像你想象的那样做:

0<n<1000

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

(0<n)<1000

所以发生的事情首先0<n被评估,结果是 0 或 1。然后检查的结果与 1000 进行比较,即其中一个0<10001<1000两个都为真,因此条件将始终为真。

您需要像以下几行一样拆分比较:

if (0<n && n<1000) {
于 2021-09-13T15:56:17.517 回答