본문 바로가기
프로그래밍/C#

C# 부울 논리 연산자

by bantomak 2023. 2. 1.

논리 연산자(Logical Operator)

논리 연산자와 비트 연산자가 헷갈리는 경우가 많다. 논리 연산자는 부울 논리 연산자라고 부르면 헷갈리는게 덜하다. 부울 값을 대상으로 동작하기 때문이다.

 

  • & (싱글 앰퍼샌드, Single ampersand) - 논리 AND 연산자 (Logical AND operator)
  • | (싱글 파이프, Single pipeline) - 논리 OR 연산자 (Logical OR operator)

이 두 연산자는 단락 연산자(Short-circuit operator)가 아닙니다.

 

조건부 논리 연산자(Conditional Logical Operator)

  • && (더블 앰퍼샌드, Dobule ampersand) - 조건부 논리 AND 연산자 (Conditional Logical AND operator)
  • || (더블 파이프, Double pipeline) - 조건부 논리 OR 연산자 (Conditional Logical OR operator)

 

이 두 연산자는 단락 연산자(Short-circuit operator)입니다.

 

심볼 읽는 법 연산자 종류 단락 연산자 여부
& 싱글 앰퍼샌드 논리 연산자, 비트 연산자 X
| 싱글 파이프 논리 연산자, 비트 연산자 X
&& 더블 앰퍼샌드 논리 연산자 O
|| 더블 파이프 논리 연산자 O
! - 논리 연산자 X
^ - 논리 연산자, 비트 연산자 X

 

이항 연산자로 쓰이는 경우

// 비트 연산자 (Bitwise Operation)
int a = 60;            /* 60 = 0011 1100 */
int b = 13;            /* 13 = 0000 1101 */
int c = a & b;         /* 12 = 0000 1100 */
// 논리 연산자 (Logical Operation)
if (true & false)
{ 
 //do something 
}

 

단항 연산자로 쓰이는 경우

int i;
unsafe
{
	int* p = &i;
	*p = 123;
}

 

논리 부정 연산자(Logical Negation Operator)

bool passed = false;
Console.WriteLine(!passed);  // output: True
Console.WriteLine(!true);    // output: False

 

논리 배타적 OR 연산자(Logical Exclusive OR Operator)

Console.WriteLine(true ^ true);    // output: False
Console.WriteLine(true ^ false);   // output: True
Console.WriteLine(false ^ true);   // output: True
Console.WriteLine(false ^ false);  // output: False

 

함께 읽으면 좋은 글

 

C# 연산자(Operators)

연산자(Operators) 산술 연산자 부울 논리 연산자 비트 연산자 같음 연산자 비교 연산자 멤버 엑세스 연산자 형식 테스트 연산자 사용자 정의 변환 연산자 산술 연산자(Arithmetic operators) 단항 연산자

jettstream.tistory.com

 

참조 사이트

 

Boolean logical operators - the boolean and, or, not, and xor operators - C#

C# logical operators perform logical negation (`!`), conjunction (AND - `&`, `&&`), and inclusive and exclusive disjunction (OR - `|`, `||`, `^`) operations with Boolean operands.

learn.microsoft.com

 

Short-Circuit Evaluation In C#

In this article we will have a deep-dive discussion about C# short-circuit evaluation.

www.c-sharpcorner.com

댓글