Điều này là chính xác, toán tử OR ngắn mạch (||) sẽ luôn trả về cùng giá trị với toán tử OR không ngắn mạch (|). (*)
Tuy nhiên, nếu toán hạng thứ nhất là đúng, toán tử ngắn mạch sẽ không đánh giá toán hạng thứ hai, trong khi toán tử không ngắn mạch sẽ luôn luôn đánh giá cả hai toán hạng. Điều này có thể có tác động đến hiệu suất, và đôi khi trong các tác dụng phụ.
Vì vậy, có một cách sử dụng cho cả hai: nếu bạn quan tâm đến hiệu suất và việc đánh giá toán hạng thứ hai không tạo ra bất kỳ tác dụng phụ nào, (hoặc nếu bạn không quan tâm đến chúng,) thì bằng mọi cách hãy sử dụng toán tử ngắn mạch . Nhưng nếu vì lý do nào đó bạn cần các tác dụng phụ của toán hạng thứ hai, thì bạn nên sử dụng toán tử không ngắn mạch.
Một ví dụ mà bạn nên sử dụng toán tử không ngắn mạch:
if( write_customer_to_database() != SUCCESS |
write_supplier_to_database() != SUCCESS |
write_order_to_database() != SUCCESS )
{
transaction_rollback();
}
(*) Ngoại trừ một số tình huống thực sự sai lầm trong đó việc đánh giá toán hạng thứ nhất thành nguyên nhân sai do tác dụng phụ của toán hạng thứ hai để đánh giá thành đúng thay vì sai.