我可以在 C++ 中做到这一点吗?
if (4<5<6)
cout<<"valid"<<endl;
即双重比较?既然我知道我可以
bool a;
a = 1+2<3+4<5>6;//etc
我可以在 C++ 中做到这一点吗?
if (4<5<6)
cout<<"valid"<<endl;
即双重比较?既然我知道我可以
bool a;
a = 1+2<3+4<5>6;//etc
是的,你可以做到,但这不会是你所期望的。它被解析为
if ( (4<5) < 6 )
产生
if ( 1 < 6 )
因为4<5
评估 to true
which 被提升为1
,这显然是正确的。
你需要
if ( (4<5) && (5<6) )
另外,是的,你可以做
a = 1+2<3+4<5>6;
但这也被解析为
a = ((1+2)<((3+4)<5))>6;
这将评估为false
since(1+2)<((3+4)<5)
产生一个布尔值,它总是小于 6。
它编译但不会做你期望的 -
if( 4 < 5 < 2)
如同
if( (4 < 5) < 2)
如同
if( (1 < 2) ) //1 obtained from cast to boolean
这当然是真的,即使我想你期待的是完全不同的东西。
这可能很笨拙,但这会起作用:
int i, j, k;
i = 4; j = 5; k = 6;
if ( (i < j) && (j < k) )
{
cout << "Valid!" << endl;
}