Почему побитовый оператор & не замыкается накоротко?

Мы все знаем, что логический &&оператор закорачивает, если левый операнд равен false, потому что мы знаем, что если один операнд равен false, тогда результат также будет false.

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

Есть ли какая-либо причина, по которой было бы плохой идеей разрешить короткое замыкание оператора &? Если нет, то почему большинство языков не делают это коротким замыканием? Вроде очевидная оптимизация.

6
задан Peter Olson 13 March 2012 в 16:46
поделиться