次のように、値 ir が 0 から -0.2 の間であるかどうかを確認しています。
float value = -0.1;
if (0 < value > -0.2f) { }
しかし、エラーが発生しますoperator '>' cannot be applied to operands of type 'bool' and 'float'
。if 文で演算子を使用して別の方法でそれを行うこともでき&&
ますが、知りたいのですが、なぜbool として検出されるのですか?
次のように、値 ir が 0 から -0.2 の間であるかどうかを確認しています。
float value = -0.1;
if (0 < value > -0.2f) { }
しかし、エラーが発生しますoperator '>' cannot be applied to operands of type 'bool' and 'float'
。if 文で演算子を使用して別の方法でそれを行うこともでき&&
ますが、知りたいのですが、なぜbool として検出されるのですか?
これを見てください:
0 < value > -0.2f
最初0 < value
に評価され、 value を返し、 float numberbool
と比較しようとするため、許可されていないためエラーが返されます。bool
-0.2f
値が小さいかどうか、および値がより大きいかどうかを確認したいので、これがあなたがしたいことです:
if (0 < value && value > -0.2f) { }
これは、if ステートメントの構造によるものです。代わりにこれを試してください:
if (0 < value && value > -0.2f) { }
あなたが書いたものはこれと同等です:
if ((0 < value) > -0.2f) { }
0 < value
比較が評価され、ブール値が返され、2 番目の比較のオペランドになります。>
また、エラー メッセージにあるように、 を使用してブール値とフロートを比較することはできません。