더북(TheBook)

동등성/비동등성 연산자 ==!=를 사용한 예를 살펴보자(이 두 연산자는 다음 절에서 자세히 다룬다).

println((x == 1) or (y == 1))     // true
println((x == 0) || (y == 0))     // false
println((x == 1) and (y != 1))    // true
println((x == 1) and (y == 1))    // false
println((x == 1) xor (y == 1))    // true
println((x == 1) xor (y != 1))    // false
println(x == 1 || y/(x - 1) != 1) // true
println(x != 1 && y/(x - 1) != 1) // false

마지막 두 예에서는 지연 계산이 필수적이다. x==1일 때 오른쪽 연산을 계산하면 0으로 나누는 오류가 발생하기 때문이다.

지연 계산과 즉시 계산 방식에서 논리곱과 논리합의 차이를 기억하라. 즉시 계산인 and, or, xor은 이름 붙은 중위 연산자와 같은 우선순위이므로 && 연산이나 || 연산보다 더 우선해 계산된다. 예를 들어 다음 식은

a || b and c or d && e

다음과 같이 계산된다.

a || (((b and c) or d) && e)

의심스러운 경우에는 괄호를 써서 작성한 코드의 의미를 명확히 하는 것을 권장한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.