【问题标题】:C relational operators if-else [duplicate]C关系运算符if-else [重复]
【发布时间】:2021-11-08 22:13:00
【问题描述】:
    #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");
    }
}

if-else for n 应该打印 "yes" 但输出是 "no"
为什么0&lt;n&lt;1000 不起作用

【问题讨论】:

  • if(0&lt;n&lt;1000) 表示 if ( (0 &lt; n) &lt; 1000) ... 而这又是 if ( ZEROorONE &lt; 1000),这显然是 true

标签: c if-statement relational-operators


【解决方案1】:

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

0<n<1000

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

(0<n)<1000

所以发生的情况是首先评估0&lt;n,结果为0或1。然后将检查结果与1000进行比较,即0&lt;10001&lt;1000两者都为真,因此条件永远都是真的。

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

if (0<n && n<1000) {

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-23
    • 2015-06-05
    • 2021-03-31
    • 2019-10-21
    • 2023-03-03
    • 1970-01-01
    • 2022-12-06
    • 2022-01-17
    相关资源
    最近更新 更多