c语言逻辑运算 if(a>b>c)错误

问题描述:

c语言逻辑运算 if(a>b>c)错误
if(a>b>c)错误
if(a>b&&a>c)正确
这个我想要表达 a>b>c 不是应该 if(a>b&&b>c)这样写么 为什么要if(a>b&&a>c)这么写啊?那能表达出 b>c的意思么?
1个回答 分类:综合 2014-11-19

问题解答:

我来补答
if (a > b > c)确实是错误的,原因在于:表达式a > b > c会依次从左到右进行计算,即相当于(a > b) > c 先计算
a > b,如果成立,会返回1, 否则会返回0; 之后再比较1 > c或者 0 > c这样就导致和你想要的结果不同
例如: a=4,b=3,c=2 则a > b返回1, 1 > c返回0,a > b > c最终返回的是0,认为不成立
     a=4,b=3,c=0,则a > b返回0,  1 > c返回1, a > b > c最终返回的是1,认为成立
因此要表达a > b > c这样的逻辑,正像你说的,应该使用 if (a > b && b > c)
看下面例子程序的输出结果
#include <stdio.h>
#include <stdlib.h>
int main()
{
        int a = 4, b = 3, c = 2, d = 0;
        if (a > b > c)
                printf("a > b > c : Right\n");
        else
                printf("a > b > c : Wrong\n");
        if (a > b > d)
                printf("a > b > d : Right\n");
        else
                printf("a > b > d : Wrong\n");
        if (a > b && b > c)
                printf("a > b > c : Right\n");
        else
                printf("a > b > c : Wrong\n");
        return 0;
}
运行结果如下:
a > b > c : Wrong
a > b > d : Right
a > b > c : Right
希望对你有帮助 :)
 
 
展开全文阅读
剩余:2000