본문 바로가기

Programming/C#

C# 연산자 III - 논리연산자, 조건연산자,null 조건부연산자

반응형

 

이전 글에서 문자열 결합 연산자와 관계 연산자에 대해서 알아봤습니다. 아래 링크를 클릭하시면 이전에 알아본 연산자들을 확인하실 수 있습니다. 이번에는 논리 연산자. 조건 연산자와 null 조건부 연산자에 대해서 알아보겠습니다.

 

C# 연산자 I - 산술연산자, 증가연산자, 감소연산자

 

C# 연산자 I - 산술연산자, 증가연산자, 감소연산자

상수와 변수는 데이터를 저장하기 위해 필요한 것이라면 연산자는 이런 데이터들을 처리하기 위해 필요하다고 할 수 있습니다. 보통 사칙연산이라 하는 것도 연산자 중의 하나로 볼 수 있습니

mr-johndoe.tistory.com

C# 연산자 II - 문자열결합연산자, 관계연산자

 

C# 연산자 II - 문자열결합연산자, 관계연산자

앞에서 산술 연산자와 증가 / 감소 연산자에 대해서 알아보았습니다. 아래 링크를 클릭하시면 내용을 확인하실 수 있습니다. 이번 시간에는 문자열 결합 연산자에 대해 알아보겠습니다. C# 연산

mr-johndoe.tistory.com

 

 

 

 

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을 선언하고 정수형 변수 ab의 합이 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에 멤버 noname을 주었습니다. 그리고, Main( ) 함수에서 클래스 A 형식으로 클래스 B를 선언하면서 null값을 입력하였습니다.

 

x = B?.no;에서 null 조건부 연산자를 사용하여 클래스 B의 멤버에 값이 null인지 확인하여 참이면 null 값을 반환하고 거짓이면 멤버 no의 값을 반환하라고 명령하였습니다. 클래스 B의 멤버 no의 값이 null이므로 null 값을 반환하게 됩니다.

 

Console.WriteLine(x);에 의해 x의 값을 화면에 출력하라고 명령하였습니다. x의 값이 null이므로 화면에는 아무것도 출력되지 않습니다.

반응형