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