Все мы знаем, что логический оператор &&
замыкает накоротко, если левый операнд равен false
, потому что мы знаем, что если один операнд равен false
, то результат также равен false
.
Почему побитовый оператор &
также не закорачивает? Если левый операнд равен 0
, то мы знаем, что результат также равен 0
. Каждый язык, который я тестировал в (C, Javascript, C #), оценивает оба операнда вместо остановки после первого.
Есть ли причина, по которой было бы плохой идеей допустить короткое замыкание оператора &
? Если нет, то почему большинство языков не делают его коротким? Это похоже на очевидную оптимизацию.