이전 글에서 문자열 결합 연산자와 관계 연산자에 대해서 알아봤습니다. 아래 링크를 클릭하시면 이전에 알아본 연산자들을 확인하실 수 있습니다. 이번에는 논리 연산자. 조건 연산자와 null 조건부 연산자에 대해서 알아보겠습니다.
C# 연산자 I - 산술연산자, 증가연산자, 감소연산자
1. 논리 연산자
논리 연산자는 Bool 연산자라고도 하며 이는 결괏값이 참 또는 거짓으로만 반환하는 연산자입니다. 논리 연산자에는 논리합 연산자와 논리곱 연산자 그리고 부정 연산자가 있습니다. 이 논리 연산자들의 반환값은 피연산자의 참, 거짓에 따라 그 결과값이 달라집니다. 피연산자 값에 따라 각 논리 연산자들의 결과값이 어떻게 달라지는지 알아보겠습니다.
1.1 논리합 연산자
논리합 연산자의 기호는 '||'를 사용하며 이는 키보드에서 원화(\)표시가 있는 키를 Shift 키를 누른 상태에서 두 번 누르면 됩니다. 논리합 연산자는 영문으로 'OR'로 나타냅니다.
피연산자의 값에 따라 논리합 연산자의 반환되는 값이 어떻게 변하는지 다음 표에 정리해 놓았습니다.
피연산자1 | 피연산자2 | 피연산자1 || 피연산자2 |
True | True | True |
True | False | True |
False | True | True |
False | False | False |
논리합 연산자는 피연산자 중에서 하나라도 True(참)가 있으면 True(참)를 반환하고 둘 다 False(거짓) 일 때 False(거짓)를 반환합니다.
1.2 논리곱 연산자
논리합 연산자의 기호는 '&&'를 사용하며 영문으로 표현할 때 'AND'로 표기합니다.
피연산자의 값에 따른 반환 값이 어떻게 되는지 아래 표에 정리해 놓았습니다.
피연산자1 | 피연산자2 | 피연산자1 && 피연산자2 |
True | True | True |
True | False | False |
False | True | False |
False | False | False |
논리곱 연산자는 피연산자 둘 모두 True(참) 일 경우에만 True(참)을 반환하며 피연산자 중 하나라도 False(거짓)이 있으면 False(거짓)를 반환합니다.
1.3 부정 연산자
부정 연산자는 피연산자의 값을 반대로 반환하는 연산자로 피연산자 값이 True(참)일 경우 False(거짓)를, False(거짓) 일 경우 True(참)를 반환합니다. 사용하는 기호는 '!'를 피연산자 앞에 붙이며 영문으로는 'NOT'으로 나타냅니다.
피연산자 값에 따른 부정 연산자 반환 값을 아래 표에 정리해 놓았습니다.
피연산자 | !피연산자 |
True | False |
False | True |
2. 조건 연산자
조건 연산자는 연산자와 함께 주어지는 조건식에 따라 반환 값이 정해지면 그 반환값이 True(참) 일 때 반환되는 값과 False(거짓) 일 때 반환되는 값을 다르게 주는 연산자입니다. 사용방법은 아래와 같습니다.
조건식 ? 참일 때 반환 값 : 거짓일 때 반환 값
주어진 조건식을 만족하면 참일 때 반환 값을 반환하고, 조건식을 만족하지 못하면 거짓일 때 반환 값을 반환합니다. 기호는 조건식 다음에 ?를 사용하였으며 참과 거짓일 때 반환 값 구분은 콜론(:)을 사용하였습니다.
예제를 보면서 확인해 보겠습니다.
int a = 2;
int b = 1;
string r1 = a + b == 3 ? "3이 맞습니다." : "3이 아닙니다.";
Console.WriteLine(r1);
string r2 = a - b == 3 ? "3이 맞습니다." : "3이 아닙니다.";
Console.WriteLine(r2);
위와 같이 코딩을 Main( ) 함수에 작성합니다. 그리고 실행을 하면 다음과 같은 결과를 얻을 수 있습니다.
3이 맞습니다.
3이 아닙니다.
string r1 = a + b == 3 ? "3이 맞습니다." : "3이 아닙니다.";를 보시면,
먼저 문자열 변수 r1을 선언하고 정수형 변수 a와 b의 합이 3이 맞는지 조건식을 입력하였습니다.
a와 b의 합은 3이 맞으므로 참일 때 반환 값인 3이 맞습니다.가 다음 명령인 Console.WriteLine(r1);에 의해 화면에 출력됩니다.
3. null 조건부 연산자
null 조건부 연산자는 기호로 '?.'을 사용하며 피연산자 앞에 붙여 사용합니다. 이 연산자는 객체의 멤버에 접근할 때 그 값이 null인지를 파악하는 연산자로 참이면 null 값을 반환하고 거짓이면 객체 멤버 값을 반환합니다.
만약, 배열에 null 조건부 연산자를 사용한다면 기호로 '?[ ]'를 사용합니다.'
class A
{
public int no;
public string name;
}
static void Main(string[] args)
{
A B = null;
int? x;
x = B?.no;
Console.WriteLine(x);
}
클래스 A에 멤버 no와 name을 주었습니다. 그리고, Main( ) 함수에서 클래스 A 형식으로 클래스 B를 선언하면서 null값을 입력하였습니다.
x = B?.no;에서 null 조건부 연산자를 사용하여 클래스 B의 멤버에 값이 null인지 확인하여 참이면 null 값을 반환하고 거짓이면 멤버 no의 값을 반환하라고 명령하였습니다. 클래스 B의 멤버 no의 값이 null이므로 null 값을 반환하게 됩니다.
Console.WriteLine(x);에 의해 x의 값을 화면에 출력하라고 명령하였습니다. x의 값이 null이므로 화면에는 아무것도 출력되지 않습니다.
'Programming > C#' 카테고리의 다른 글
C# 반복문에 대해 알아보기 - for 문, foreach 문 (0) | 2021.10.02 |
---|---|
C# 조건문 - if 문, switch case 문 (0) | 2021.10.01 |
C# 연산자 II - 문자열결합연산자, 관계연산자 (0) | 2021.09.22 |
C# 연산자 I - 산술연산자, 증가연산자, 감소연산자 (0) | 2021.09.22 |
C# 프로그래밍 기본 구조 알아보기 II - using, namespace, garbage collector, Main (0) | 2021.09.16 |