본문 바로가기
제가 쓴 책/초보자를 위한 C# and Database 완벽가이드

논리 연산자와 조건부 논리 연산자의 비교

by edupicker(체르니) 2010. 8. 25.

41 페이지에서 설명한 논리 연산자 중에서  &(AND 연산) 2개의 조건식을 모두 비교하여 그 결과를 참, 거짓으로 구분했으며 |(OR 연산) 역시 2개의 조건식을 모두 비교하여 그 결과를 참, 거짓으로 나타내었습니다.

A, B 2
개의 조건식이 있을 때 이를 논리 연산자를 이용할 경우 다음과 같은 비교를 통해 참(True), 거짓(False)을 구분합니다.

A

B

 AND(A & B)

OR(A | B)

거짓

거짓

거짓

거짓

거짓

거짓

거짓

거짓


위에서 보면 A, B 조건식에서 AND 연산은 A, B 모두 참(True) 경우에만 참입니다. 그렇다면 만일 A 조건식이 거짓일 경우에는 B 조건식을 검사할 필요가 있을까요? 없을까요? 검사할 필요가 없겠죠?
마찬가지로 OR 연산의 경우 A가 참이면 B 조건을 검사할 필요가 없을까요? 있을까요? 당연히 A가 참이므로 B는 거짓이든 참이든 상관없이 그 결과는 참이 됩니다.
이에서 알 수 있듯이 불필요한 논리 연산을 피하기 위해서 제공되는 연산자가 바로 조건부 AND(&&), 조건부 OR(||) 연산입니다.
책의 예제의 Main() 함수를 다음과 같이 변경합니다.

  int year = 25;

  int height = 175;

 

  //AND 연산(&) --①

  if ((year < 30) & (conditionalTest(height)))

Console.WriteLine("2개의 조건식에 대한 AND 연산의 결과입니다.”);


//조건부 AND 연산(&&) --①-1

  if ((year < 30) && (conditionalTest(height)))

    Console.WriteLine("2개의 조건식에 대한 조건부 AND 연산의 결과입니다.”);

 

  //OR 연산(|) --②

  if ((year < 30) | (conditionalTest(height)))

    Console.WriteLine("2개 조건식에 대한 OR 연산의 결과입니다.");

 

//조건부 OR 연산(||) --②-1

  if ((year < 30) || (conditionalTest(height)))

    Console.WriteLine("2개 조건식에 대한 조건부 OR 연산의 결과입니다.”);


위와 같이 Main() 함수를 변경하고 이제 위에서 B 조건식에 해당하는 conditionalTest() 함수를 다음과 같이 작성합니다.

static bool conditionalTest(int indata)

{

if (indata < 180)

  {

    Console.WriteLine("180보다 작습니다.");

    return true;

  }

  else

  {

    Console.WriteLine("180보다 큽니다.");

    return false;

  }

}

이와 같이 작성한 후 Main() 함수 내에 있는 year의 값을 int year = 25; 으로 한 후 실행해봅니다.
그러면 다음과 같이 조건식 A가 참이므로 조건식 B는 실행하지 않는 결과를 나타냅니다. 어떻게 알 수 있냐구요. “180보다~” 1번만 찍혔잖아요. OR 연산을 통해 (conditionalTest(175))이 실행되었지만 조건부 OR 연산은 실행되지 않았다는 의미입니다.


마찬가지로 int year 값을 35로 해서 실행해보면 조건부 AND(&&)의 의미를 이해할 수 있을 것입니다. 이상으로 제 책에 대한 부연 설명을 마칩니다. 열심히 공부하세요.