我用 C 语言执行了以下代码;
#include<stdio.h>
#include<conio.h>
void main()
{
int a=15,b=10,c=5;
if(a>b>c)
printf("True");
else
printf("False");
getch();
}
输出:假请解释一下为什么?
C 或
C++ 中没有三元(或"链式")>
运算符。因此,您的表达式的计算结果为((a>b)>c)
因为计算是从左到右完成的。
在 C 中,真表达式的计算结果为 1
,而假表达式的计算结果为 0
。C++我的记忆是,它们的计算结果是布尔true
或false
,但无论如何,这些类型都转换为1
或0
,所以情况大致相同。
使用该原则,a>b
将评估是否1
是否a>b
,否则0
。因此如果a>b
,则整个表达式的计算结果为 1>c
,否则计算0>c
。由于c
不止一个,1>c
和0>c
都不是真的,输出总是0
,或者假,程序会打印False
。
要实现我强烈怀疑您真正想要的东西,请使用 ((a>b) && (b>c))
.