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的意思么?

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/19 06:30:24
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的意思么?
xWooF*(SQ"Y& fo&Mـ[;ik-I J YXۈn J%@˫|>' %lIS͝<=\ 5 g.?C1&Ÿ g*2ͱ' B6~?܄ 2_y΃Cld։:V{ X~hwؓ~P {X]/throD0#iyB`㇭}0(zlvz%ޮ߳kXmo` jZ ` n;6<ί0LA (xxޯFHahP}KRLjd:)6|e`ƶP!yV,=-n:= e#tw0&\Es1bbҨ1#DH]/8] ISrX|Jȹ(= {4'i$fBx@uklBnICr PF gofp[:8&1.I]uE]C7H_CgwyeH4L{M^Y-KjyU]K@ZԴ؜z~ hyKzn95YmQUy}dB_TY̆L>Y[M45) "QB4,.R rB++Q 2,2,HS$ /a(TX,IL4 "\XeeF9)IҔXpBZNć

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的意思么?
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的意思么?

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的意思么?
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
希望对你有帮助 :)