C & C++ FAQ
|
|
xの値が、aより大きくbより小さいかどうかを判断することを意図した、式a < x < bについて考えましょう。
関係演算子<は、左オペランドを評価した値が、右オペランドを評価した値より小さければint型の1を、そうでなければint型の0を生成します。
この演算子は左結合性をもつ2項の演算子ですから、式a < b < cは(a < b) < cと解釈されます。したがって、この式を評価した値は、
- aがbより小さければ、1 < cすなわちcが1より大きければ1そうでなければ0。
- aがb以上であれば、0 < cすなわちcが0より大きければ1そうでなければ0。
となります。xの値が、aより大きくbより小さいかどうかを判断するのではありません。
正しくはa < b && b < cとなります。