|| 논리적 OR 이라고 합니다. 연산자 및 | 비트별 논리 OR이라고 합니다. 그러나 그들 사이의 기본적인 차이점은 실행 방식에 있습니다. || 구문 및 | 다음과 동일 -
- bool_exp1 || bool_exp2
- bool_exp1 | bool_exp2
- 이제 1과 2의 구문은 서로 비슷해 보이지만 실행 방식은 완전히 다릅니다.
- 첫 번째 명령문에서 첫 번째 bool_exp1이 실행되고 이 표현식의 결과가 다른 명령문의 실행을 결정합니다.
- 참이면 OR이 참이므로 otherstatement를 실행하는 것은 의미가 없습니다.
- bool_exp2 문은 bool_exp1이 잘못된 실행을 반환하는 경우에만 실행됩니다.
- 첫 번째 표현식의 결과를 기준으로 회로(문)를 단락시키기 때문에 단락 연산자라고도 합니다.
- 지금의 경우 | 상황이 다릅니다. 컴파일러는 두 명령문을 모두 실행합니다. 즉, 한 명령문의 결과에 관계없이 두 명령문이 모두 실행됩니다.
- OR의 결과는 "거짓"으로 평가된 결과에만 유효하고 두 명령문이 모두 거짓일 때 가능하기 때문에 하나가 참이면 다른 명령문을 실행하는 것은 의미가 없기 때문에 일을 수행하는 비효율적인 방법입니다.
논리적 OR
예
using System; namespace DemoApplication{ public class Program{ static void Main(string[] args){ if(Condition1() || Condition2()){ Console.WriteLine("Logical OR If Condition Executed"); } Console.ReadLine(); } static bool Condition1(){ Console.WriteLine("Condition 1 executed"); return true; } static bool Condition2(){ Console.WriteLine("Condition 2 executed"); return true; } } }
출력
Condition 1 executed Logical OR If Condition Executed
비트 논리 OR
예
using System; namespace DemoApplication{ public class Program{ static void Main(string[] args){ if(Condition1() | Condition2()){ Console.WriteLine("Logical OR If Condition Executed"); } Console.ReadLine(); } static bool Condition1(){ Console.WriteLine("Condition 1 executed"); return true; } static bool Condition2(){ Console.WriteLine("Condition 2 executed"); return true; } } }
출력
Condition 1 executed Condition 2 executed Logical OR If Condition Executed