Eager Operator, 단락 연산자(Short-circuit Operatoer)
C# 관련으로 공부하다보니 단락 연산자(short-circuit operator)라는 단어를 발견해서 그에 대한 정리를 해보려고 한다.
Eager operator는 어떻게 번역되는지 모르겠네요! 아시는 분이 있다면 댓글 부탁드립니다.
심볼(Symbol) | 연산자 타입 | 속성 |
&, | | 논리 연산자, 비트 연산자 | Eager operator |
&&, || | 논리 조건 연산자 | Short-circuit operator |
eager operator는 첫 번째 조건과 상관없이 두 번째 조건을 실행한다.
eager operator는 비트 연산자(bit operator)와 모양이 같지만 조건 결과가 boolean이면 eager operator로 쓰인다.
class Program
{
static void Main(string[] args)
{
int a = 5;
int b = 10;
// && &
// func2()만 실행되고 func1()은 실행되지 않는다.
if (func2(b, a) && func1(a))
{
Console.WriteLine("condition 2");
}
// func1()과 func2() 둘다 실행된다.
if (func2(b, a) & func1(a))
{
Console.WriteLine("condition 2");
}
// || |
// func1()만 실행되고 func2()은 실행되지 않는다.
if (func1(a) || func2(a, b))
{
Console.WriteLine("condition 1");
}
// func1()과 func2() 둘다 실행된다.
if (func1(a) | func2(a, b))
{
Console.WriteLine("condition 1");
}
bool func1(int a)
{
Console.WriteLine("func1()");
return a != 0;
}
bool func2(int a, int b)
{
Console.WriteLine("func2()");
return a < b;
}
}
}
참조 사이트
'프로그래밍 > C#' 카테고리의 다른 글
C# 부울 논리 연산자 (0) | 2023.02.01 |
---|---|
이진 연산자(Binary operator)에 대해서 (0) | 2023.01.27 |
C# 간단하게 Json 형식 파싱하기 (2) | 2023.01.26 |
C# 연산자(Operators) (0) | 2023.01.25 |
C# 가변(Mutable)과 불변(Immutable) 타입에 대하여 (0) | 2023.01.25 |
댓글