#include
using namespace std;
int main(){int a=5, b=4, c=3,d;
d=(a>b>c);
cout<<d;
return 0;
}
为什么小括号里的不用&&也能行,还有d不是int类型么怎么输出0了?
因为b>c也是一个表达式,它也可以和a比较。不过a>b>c和a>b && b>c的含义不同。
d=(a>b>c) 然后a>b为真左边为 1 但是1小于3即c 所以答案为d=0 不用&& 是比较运算
看这个程序
#include <iostream>
using namespace std;
int main()
{
int a = 1, b = 2, c = 3;
cout << (int)(b > c) << endl;
cout << (int)(b < c) << endl;
}
0
1
a>b的结果和c再进行比较,所以不是&&可以不用,而是这个表达式的结果和a>b&&b>c是两个不同的结果。
还有,你的d当然是int类型,你用的是逗号,所以abcd都是int
d=(a>b>c) 这个式子的运算顺序是先计算a>b即5>4为真(1),然后运算1>c(3),显然这个式子是假(0),所以最终d=0
a=5, b=4, c=0
a=5, b=4, c=3
//看看结果就知道了
//5 > 4 -->1
//1>3 -->0
//不过不建议你以后这样编程,也省不了多少代码,可读性不好
首先d是int型的,
int a = 1, b = 2, c = 3;等价于
int a = 1;
int b = 2;
int c = 3;
int d;
括号里的比较实际上是执行的operator<函数,返回值是两者比较是真或假的bool值(结合if(a>b)),这里是先执行a>b自然返回真(1),再和
int型的c比较时,bool值转换成了int型,实际就是1和3比,肯定是假了。所以最后输出了0。