双重比较 在C++中,我能做到这一点吗?< /P> if (4<5<6) cout<<"valid"<<endl; 如果(4

双重比较 在C++中,我能做到这一点吗?< /P> if (4<5<6) cout<<"valid"<<endl; 如果(4,c++,comparison,boolean,comparison-operators,C++,Comparison,Boolean,Comparison Operators,是的,您可以这样做,但它不是您所期望的。它被解析为 if ( (4<5) < 6 ) 还有,是的,你能做到 a = 1+2<3+4<5>6; a=1+2这可能有点笨拙,但这会奏效: int i, j, k; i = 4; j = 5; k = 6; if ( (i < j) && (j < k) ) { cout << "Valid!" << endl; } inti,j,k; i=4;j=5;k=6

是的,您可以这样做,但它不是您所期望的。它被解析为

if ( (4<5) < 6 )
还有,是的,你能做到

a = 1+2<3+4<5>6;

a=1+2这可能有点笨拙,但这会奏效:

int i, j, k;
i = 4; j = 5; k = 6;
if ( (i < j) && (j < k) )
{
    cout << "Valid!" << endl;
}
inti,j,k;
i=4;j=5;k=6;
如果((icout它可以编译,但不会执行您期望的操作-

if( 4 < 5 < 2) 
if(4<5<2)

if( (4 < 5) < 2)
if((4<5)<2)

if( (1 < 2) )  //1 obtained from cast to boolean
if((1<2))//1从强制转换为布尔值获得

这当然是真的,即使我想象你在期待一些不同的东西。

和<4>也…> />代码>语法分析器,它是模板签名,所以你也会得到语法错误。没有<代码> <代码>只在某些模板上下文中被作为模板的东西来填充(C++分析器是难以置信的复杂和巴洛克)。不,不要这样做。但是使用
g++Wall-g
(即使用所有警告和调试信息)编译,编译器将警告您。
int i, j, k;
i = 4; j = 5; k = 6;
if ( (i < j) && (j < k) )
{
    cout << "Valid!" << endl;
}
if( 4 < 5 < 2) 
if( (4 < 5) < 2)
if( (1 < 2) )  //1 obtained from cast to boolean