5. 루프와 관계 표현식(2) - 논리 표현식

WanJu Kim·2022년 10월 20일
0

C++

목록 보기
21/81

때로는 하나 이상의 조건을 검사해야 하는 경우가 있다. 예를 들어 보통 게임 캐릭터의 체력은 0미만이 되서도 안되지만 지정 체력을 초과해서도 안 된다. 이같이 주어진 표현식을 조합하거나 변경하는 세 가지 연산자가 있다. 각각 논리합, 논리곱, 논리부정이라 부른다.

  • 논리합 or 연산자(||)
    or은 둘 중 하나라도 true면 true라고 취급하는 것을 말한다. 예시는 다음과 같다.
	5 > 3 || 8 > 3	// 둘 다 true이므로 true.
    5 > 3 || 8 < 3	// 첫째 표현식이 true이므로 true.
    5 < 3 || 8 > 3	// 둘째 표현식이 true이므로 true.
    5 < 3 || 8 < 3	// 둘 다 false이므로 false.
  • 논리곱 and 연산자(&&)
    and는 둘 다 true여야지 true라고 취급하는 것을 말한다. 예시는 다음과 같다.
	5 > 3 && 8 > 3	// 둘 다 true이므로 true.
    5 > 3 && 8 < 3	// 둘째 표현식이 false이므로 false.
    5 < 3 && 8 > 3	// 첫째 표현식이 false이므로 false이므로.
    5 < 3 && 8 < 3	// 둘 다 false이므로 false.
  • 논리부정 not 연산자(!)
    !연산자는 뒤따르는 표현식의 값을 반대로 만든다. 즉 true이면 false로, false면 true로 만든다.

  • 논리 연산자의 고려 사항
    논리곱 연산자랑 논리합 연산자는 관계 연산자보다 우선순위가 낮다. 즉 다음 구문은 같다.

	x > 5 && x < 10
    (x > 5) && (x < 10)	// 논리합 연산자(||)도 마찬가지다.

그러나 논리부정 연산자는 그렇지 않다. 따라서 어떤 표현식을 부정형으로 만들려면, 소괄호를 붙여주어야 한다.

	!(x > 5)	// x가 5보다 크다의 부정.
    !x > 5		// !x가 5보다 크다.

논리곱 연산자는 논리합 연산자보다 우선순위가 높다. 따라서 다음 두 코드는 같다.

	age > 30 && age < 45 || weight > 300
    (age > 30 && age < 45) || weight > 300

이런 연산자 우선순위가 있지만, 가독성을 위해서 항상 소괄호를 붙여주는 게 좋다.

profile
Question, Think, Select

0개의 댓글