В C, я думаю, это рано, если первое условие, второе и т. Д. (С несколькими условиями) ложно ... так что
if( 50<x && x<100 )
.. сначала проверит 50<x
... если это неверно, то пропустит проверку x<100
.
Однако, есть некоторые C-подобные производные языки, которые не имеют такой расширенной проверки. Вместо этого они сначала вытягивают все bools, а затем сравнивают.
EG: я занимался кодированием в HLSL (высокоуровневый язык шейдеров) для Direct X. Он не замыкается, если раннее условие ложно; ему нравится проверять каждого, а затем решать после. Итак ...
if (50<x && x<100)
... оцениваются обе части, затем, если любая из них ложна, она продолжается. Так как все части в любом случае оцениваются, я просто заканчиваю ...
if( 50 < x < 100)
Если в этих ситуациях вы хотите сохранять анальный сдерживающий эффект, вы можете раздувать код, немного разветвившись ...
if (50 < x)
{
if (x < 100)
{do A}
else
{do B}
}
else
{do B}
Это больше код, но он заставляет компилятор HLSL исключать решения по одному за раз, вместо того, чтобы тратить время на оценку всех значений bool, когда один уже ложен.