This question already has answers here:
Closed 4 years ago.
Math-like chaining of the comparison operator - as in, “if ( (5<j<=1) )” [duplicate]
(4个答案)
我用C语言执行了下面的代码;
输出:
假
请解释我为什么?
(4个答案)
我用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
或false,程序将打印((a>b) && (b>c))
。
要实现我强烈怀疑的目标,请使用。
关于c - 如果我们使用if(a> b> c)#a大于所有三个结果,则结果为false ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28010636/