В чем разница между | и || или операторы? - PullRequest
274 голосов
/ 30 августа 2008

Я всегда использовал || (два канала) в выражениях OR, как в C #, так и в PHP. Иногда я вижу одну использованную трубу: |. В чем разница между этими двумя способами? Есть ли какие-либо предостережения при использовании одного над другим или они взаимозаменяемы?

Ответы [ 13 ]

0 голосов
/ 30 августа 2008

Один канал (|) - это оператор побитового ИЛИ .

Два канала (||) - логический оператор ИЛИ.

Они не являются взаимозаменяемыми.

0 голосов
/ 30 августа 2008

Опорная труба "|" является «побитовым» или и должен использоваться только тогда, когда вы знаете, что делаете. Двойная труба "||" является логическим или, и может использоваться в логических утверждениях, таких как "x == 0 || x == 1".

Вот пример того, что поразрядно или делает: если a = 0101 и b = 0011, то a | b = 0111. Если вы имеете дело с логической системой, которая обрабатывает любое ненулевое значение как истинное, то побитовое или будет действовать так же, как логическое или, но его аналог (побитовое и, "&") НЕ будет. Также побитовое или не выполняет оценку короткого замыкания.

0 голосов
/ 30 августа 2008

| оператор выполняет побитовое ИЛИ своих двух операндов (то есть обе стороны должны иметь значение false, чтобы он возвращал false), а || оператор будет оценивать второго оператора только в случае необходимости.

http://msdn.microsoft.com/en-us/library/kxszd0kx(VS.71).aspx

http://msdn.microsoft.com/en-us/library/6373h346(VS.71).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...