다음: 단박 논리 연산자, 상위 문서: 논리 표현식   [차례][찾아보기]


8.5.1 원소 단위 논리 연산자

원소 단위 논리 표현식은 논리 연산자 “논리합” (‘|’), “논리곱” (‘&’),  “부정” (‘!’)을 사용한 비교 표현식과 우선 순위를 조정하는 괄호 묶음의 조합입니다. 논리 표현식의 참 여부는 요소 표현식 원소의 진리값의 결합으로 계산합니다.

원소 단위 논리 표현식은 비교 표현식을 사용할 수 있는 곳이라면 어디든지 사용 가능합니다. if문과 while문 안에서도 사용 가능합니다. 참고로, if문과 while문의 조건식 안에 행렬을 넣으면, 행렬 원소가 모두 0이 아닐 때만 조건식이 참이 됩니다.

비교 연산자처럼, 원소 단위 논리 표현식의 각 원소도, 논리 표현식의 결과를 변수에 할당하거나 산술에 사용할 수 있는, 수치값(참은 1, 거짓은 0)을 가집니다.

원소 단위 논리 연산자 세 개에 대한 설명입니다.

논리1 & 논리2

논리1논리2의 원소가 모두 참이면 대응하는 결과 원소가 참입니다.

논리1 | 논리2

논리1논리2의 원소 중 하나라도 참이면 대응하는 결과 원소가 참입니다.

! 논리
~ 논리

논리의 원소가 거짓이면, 대응하는 결과 원소가 참입니다.

이 연산자는 원소 단위로 작동합니다. 예를 들어, 아래 표현식은

[1, 0; 0, 1] & [1, 0; 2, 3]

2×2짜리 논리 배열을 반환합니다.

이항 연산자에는 확장 변환 규칙이 적용합니다. 확장 변환을 참고 하십시오. 특히, 계수 하나가 스칼라이고, 다른 하나는 행렬이면,  연산자가 스칼라를 각 행렬 원소에 적용합니다.

이항 원소 단위 논리 연산자가 안긴 표현식 논리1과 논리2를 결과를 내기 전에 평가합니다. 이로 인하여 표현식에 부작용이 있으면 차이가 발생합니다. 예를 들어, 아래 표현식에서

a & b++

변수 a가 0일지라도 변수 b의 값이 증가합니다.

이 방식은 행렬인 계수를 논리 연산할 때 필수적입니다.

z = and (값1, 값2)
z = and (값1, 값2, …)

값1값2의 논리곱을 반환합니다.

이 함수는 연산자 구문 값1 & 값2와 똑같습니다. 매개변수를 두 개 넘게 주면, 왼쪽에서 오른쪽으로 차례차례 논리곱을 연산합니다.

(…((값1 & 값2) & 값3) & …)

같이 보기: or, not, xor.

z = not (값1)

값1의 논리 부정을 반환합니다.

이 함수는 연산자 구문 값1와 똑같습니다.

같이 보기: and, or, xor.

z = or (값1, 값2)
z = or (값1, 값2, …)

값1값2의 논리합을 반환합니다.

이 함수는 연산자 구문 값1 | 값2와 똑같습니다. 매개변수를 두 개 넘게 주면, 왼쪽에서 오른쪽으로 차례차례 논리곱을 연산합니다.

(…((값1 | 값2) | 값3) | …)

같이 보기: and, not, xor.


다음: 단박 논리 연산자, 상위 문서: 논리 표현식   [차례][찾아보기]