You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言if-else使用0<n<1000条件判断输出异常原因求解

原因说明

C语言的规则决定了0 < n < 1000的写法不符合预期的区间判断逻辑:

  • 关系运算符(</>/<=/>=)是左结合的,运算顺序从左到右
  • 关系表达式的返回值为int类型:条件成立返回1,不成立返回0

所以0 < n < 1000实际等价于(0 < n) < 1000,代入n=2500的运算过程如下:

  1. 先计算0 < 2500,条件成立,返回值为1
  2. 再计算1 < 1000,条件也成立,整个表达式最终结果为1(真值)
  3. 因此if判断成立,执行分支打印no

如果要实现“n大于0且小于1000”的区间判断,必须用逻辑与运算符&&连接两个独立的关系判断,即n > 0 && n < 1000,也就是你第二段代码的写法,运行后会输出预期的yes。

测试代码

#include<stdio.h>
int main()
{
    int n=2500;
    // 错误写法,实际等价于(0 < n) < 1000
    if(0<n<1000){
        printf("no\n");
    }
    else{
        printf("yes\n");
    }
    // 正确写法,判断两个条件同时成立
    if(n>0 && n<1000){
        printf("no\n");
    }
    else{
        printf("yes\n");
    }
    return 0;
}

内容的提问来源于stack exchange,提问作者jspy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 13:18:02