Logical operators
Peponi │ 11/18/2024 │ 6m
Logical operators
Peponi
1. Introduction
논리 연산자는 단항 및 이진 논리 연산을 포함한다.
- NOT :
!
- AND :
&
- OR :
|
- XOR :
^
- Conditional AND :
&&
- 왼쪽 피연산자가
true
일 때만 오른쪽 피연산자를 평가
- 왼쪽 피연산자가
- Conditional OR :
||
- 왼쪽 피연산자가
false
일 때만 오른쪽 피연산자를 평가
- 왼쪽 피연산자가
2. NOT
단항 논리 연산자 !
는 피연산자의 부정을 반환한다. 접두사로 사용하며, 접미사로 사용하는 경우 null 허용 연산자가 된다.
Console.WriteLine(!true);
Console.WriteLine(!false);
/* output:
False
True
*/
3. AND
&
연산자는 AND 연산을 수행한다. 왼쪽과 오른쪽 피연산자 둘 다 true
의 값을 가질 때만 true
를 반환한다.
Console.WriteLine(true & true);
Console.WriteLine(true & false);
Console.WriteLine(false & true);
Console.WriteLine(false & false);
/* output:
True
False
False
False
*/
&
연산자는 왼쪽 피연산자가 false
일 때도 오른쪽 연산자의 값을 확인한다.
bool Right()
{
Console.WriteLine("Right");
return true;
}
bool Left = true;
Console.WriteLine(Left & Right());
Console.WriteLine(!Left & Right());
/* output:
Right
True
Right
False
*/
정수 형식 피연산자의 경우 비트 연산을 수행한다.
int A = 0b_1010_1011;
int B = 0b_1101_1101;
int C = A & B;
Console.WriteLine(Convert.ToString(C, 2));
/* output:
10001001
*/
4. OR
|
연산자는 OR 연산을 수행한다. 왼쪽 또는 오른쪽 피연산자가 true
의 값을 가질 때 true
를 반환한다.
Console.WriteLine(true | true);
Console.WriteLine(true | false);
Console.WriteLine(false | true);
Console.WriteLine(false | false);
/* output:
True
True
True
False
*/
|
연산자는 왼쪽 피연산자가 true
일 때도 오른쪽 연산자의 값을 확인한다.
bool Right()
{
Console.WriteLine("Right");
return true;
}
bool Left = false;
Console.WriteLine(Left | Right());
Console.WriteLine(!Left | Right());
/* output:
Right
True
Right
True
*/
정수 형식 피연산자의 경우 비트 연산을 수행한다.
int A = 0b_1010_1011;
int B = 0b_1101_1101;
int C = A | B;
Console.WriteLine(Convert.ToString(C, 2));
/* output:
11111111
*/
5. XOR
^
연산자는 XOR 연산을 수행한다. 왼쪽과 오른쪽 피연산자의 값이 다를 때 true
를 반환한다.
Console.WriteLine(true ^ true);
Console.WriteLine(true ^ false);
Console.WriteLine(false ^ true);
Console.WriteLine(false ^ false);
/* output:
False
True
True
False
*/
정수 형식 피연산자의 경우 비트 연산을 수행한다.
int A = 0b_1010_1011;
int B = 0b_1101_1101;
int C = A ^ B; // 0b_0111_0110
Console.WriteLine(Convert.ToString(C, 2));
/* output:
1110110
*/
6. Conditional AND
&&
연산자는 AND 연산을 수행한다. 왼쪽과 오른쪽 피연산자 둘 다 true
의 값을 가질 때만 true
를 반환한다.
Console.WriteLine(true && true);
Console.WriteLine(true && false);
Console.WriteLine(false && true);
Console.WriteLine(false && false);
/* output:
True
False
False
False
*/
왼쪽 피연산자가 false
일 때는 오른쪽 연산자의 값을 확인하지 않는다.
bool Right()
{
Console.WriteLine("Right");
return true;
}
bool Left = true;
Console.WriteLine(Left && Right());
Console.WriteLine(!Left && Right());
/* output:
Right
True
False
*/
7. Conditional OR
||
연산자는 OR 연산을 수행한다. 왼쪽 또는 오른쪽 피연산자가 true
의 값을 가질 때 true
를 반환한다.
Console.WriteLine(true || true);
Console.WriteLine(true || false);
Console.WriteLine(false || true);
Console.WriteLine(false || false);
/* output:
True
True
True
False
*/
왼쪽 피연산자가 true
일 때는 오른쪽 연산자의 값을 확인하지 않는다.
bool Right()
{
Console.WriteLine("Right");
return true;
}
bool Left = false;
Console.WriteLine(Left || Right());
Console.WriteLine(!Left || Right());
/* output:
Right
True
True
*/
8. Nullable bool
bool?
피연산자의 경우 !
, &
, |
, ^
를 지원하지만 &&
, ||
연산자는 지원하지 않는다. bool?
피연산자의 연산 결과는 bool
과 다르게 나타난다. 아래는 bool?
피연산자의 연산 결과이다.
X | Y | !X | X & Y | X | Y | X ^ Y |
---|---|---|---|---|---|
true | true | false | true | true | false |
true | false | false | true | true | |
true | null | null | true | null | |
false | true | true | false | true | true |
false | false | false | false | false | |
false | null | false | null | null | |
null | true | null | null | true | null |
null | false | false | null | null | |
null | null | null | null | null |
9. 할당 연산자
할당 연산자 &=
, |=
, ^=
는 연산과 동시에 할당이 가능해지는 복합 할당 식을 가능하게 한다. 예로, 다음 두 식은 동일한 연산을 수행한다.
bool X = true;
X = X & false;
X &= false;
할당 연산자는 다음과 같이 사용한다.
bool AND = true;
bool OR = true;
bool XOR = true;
AND &= false;
OR |= false;
XOR ^= false;
Console.WriteLine(AND);
Console.WriteLine(OR);
Console.WriteLine(XOR);
/* output:
False
True
True
*/