これを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
評価するため、明らかにtrueが得られます。true
1
あなたは必要になるでしょう
if ( (4<5) && (5<6) )
また、はい、あなたはすることができます
a = 1+2<3+4<5>6;
しかし、それも次のように解析されます
a = ((1+2)<((3+4)<5))>6;
これは、常に6よりも小さいブール値を生成するfalse
ために評価されます。(1+2)<((3+4)<5)
コンパイルされますが、期待どおりには機能しません-
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;
}