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语言执行了下面的代码;
#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++中,我的回忆是,它们被评估为布尔truefalse,但是这些类型无论如何都转换为10,所以情况大致相同。
根据这一原则,a>b将评估为1如果a>b则为0否则为a>b。因此,如果1>c,则整个表达式的计算结果为0>c,否则为c。由于1>c不止一个,因此0>c0都不是真的,并且输出总是False或false,程序将打印((a>b) && (b>c))
要实现我强烈怀疑的目标,请使用。

关于c - 如果我们使用if(a> b> c)#a大于所有三个结果,则结果为false ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28010636/

10-11 23:00
查看更多