Это правильно, оператор ИЛИ короткого замыкания (||) всегда будет возвращать то же значение, что и оператор ИЛИ без короткого замыкания (|). (*)
Однако, если первый операнд является истинным, оператор короткого замыкания не будет вызывать оценку второго операнда, в то время как оператор без короткого замыкания всегда будет вызывать оценку обоих операндов. Это может повлиять на производительность, а иногда и на побочные эффекты.
Таким образом, есть смысл использовать и то и другое: если вы заботитесь о производительности, а оценка второго операнда не приводит к каким-либо побочным эффектам (или если вы не заботитесь о них), то непременно используйте оператор короткого замыкания. , Но если по какой-то причине вам нужны побочные эффекты второго операнда, вам следует использовать оператор без короткого замыкания.
Пример, где вы должны использовать оператор без короткого замыкания:
if( write_customer_to_database() != SUCCESS |
write_supplier_to_database() != SUCCESS |
write_order_to_database() != SUCCESS )
{
transaction_rollback();
}
(*) За исключением некоторого действительно извращенного сценария, где оценка первого операнда ложными причинами побочным эффектом приводит к тому, что второй операнд оценивается как истинный вместо ложного.