때로는 하나 이상의 조건을 검사해야 하는 경우가 있다. 예를 들어 보통 게임 캐릭터의 체력은 0미만이 되서도 안되지만 지정 체력을 초과해서도 안 된다. 이같이 주어진 표현식을 조합하거나 변경하는 세 가지 연산자가 있다. 각각 논리합, 논리곱, 논리부정이라 부른다.
5 > 3 || 8 > 3 // 둘 다 true이므로 true.
5 > 3 || 8 < 3 // 첫째 표현식이 true이므로 true.
5 < 3 || 8 > 3 // 둘째 표현식이 true이므로 true.
5 < 3 || 8 < 3 // 둘 다 false이므로 false.
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
이런 연산자 우선순위가 있지만, 가독성을 위해서 항상 소괄호를 붙여주는 게 좋다.