반응형

논리 연산자 &&   ||

조건식을 연결할 때 사용하는 연산자

 

|| (OR 결합) : 피연산자 중 어느 한 쪽이 true이면 true를 결과로 얻는다.

%% (AND 결합) : 피연산자 양쪽 모두 true이어야 true를 결과로 얻는다.

 

ⓐ x는 10보다 크고 20보다 작다.

'x>10'와 'x<20'가 '그리고(and)'로 연결된 조건이므로 다음과 같이 쓸 수 있다.

x > 10 %% x < 20

'x>10'는 '10<x'와 같으므로 다음과 같이 쓸 수도 있다. 보통은 변수를 왼쪽에 쓰지만 이런 경우 가독성 측면에서 보면 아래의 식이 더 나을 수 있다.

10 < x && x < 20

 

ⓑ i는 2의 배수 또는 3의 배수이다.

어떤 수가 2의 배수라는 얘기는 2로 나누었을 때 나머지가 0이라는 뜻이다. 그래서 나머지 연산의 결과가 0인지 확인하면 된다. '또는'으로 두 조건이 연결되었으므로 논리 연산자 '||'(OR)를 사용해야 한다.

i%2==0 || i%3==0

i의 값이 8일 때, 위의 식은 다음과 같은 과정으로 연산된다.

i%2==0 || i%3==0

8%2==0 || 8%3==0

0==0 || 2==0

true || false

true

ⓒ i는 2의 배수 또는 3의 배수지만 6의 배수는 아니다.

이전 조건의 6의 배수를 제외하는 조건이 더 붙었다. 6의 배수가 아니어야 한다는 조건은

'i%6!=0'이고, 이 조건을 '&&(AND)'로 연결해야 한다.

( i%2==0 || i%3==0 ) && i%6!=0

 

위의 식에 괄호를 사용한 이유는 '&&'가 '||' 보다 우선순위가 높기 때문이다. 만일 괄호를 사용하지 않으면

'&&'를 먼저 연산한다. 다음의 두 식은 동일하다.

i%2==0 || i%3==0 && i%6!=0

i%2==0 || (i%3==0 && i%6!=0)

 

ⓓ 문자 ch는 숫자('0'~'9')이다.

사용자로부터 입력된 문자가 숫자('0'~'9')인지 확인하는 식은 다음과 같이 쓸 수 있다.

'0' <= ch && ch <= '9'

유니코드에서 문자 '0'부터 '9'까지 연속적으로 배치되어 있기 때문에 가능한 식이다.

문자 '0'부터 '9'까지 유니코드는 10진수로 다음과 같다.

 

 

논리 부정 연산자   ! (단항연산자)

true를 false로, false는 true로 바꾼다.

 

ch < 'a' || ch > 'z'   <-> !('a' <= ch && ch <= 'z')

두 개가 같지만 오른쪽에 있는 식이 더욱더 가독성이 좋다.

반응형