원소 단위 논리 표현식은 논리 연산자 “논리합” (‘|’), “논리곱” (‘&’), “부정” (‘!’)을 사용한 비교 표현식과 우선 순위를 조정하는 괄호 묶음의 조합입니다. 논리 표현식의 참 여부는 요소 표현식 원소의 진리값의 결합으로 계산합니다.
원소 단위 논리 표현식은 비교 표현식을 사용할 수 있는 곳이라면 어디든지 사용 가능합니다. 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의 값이 증가합니다.
이 방식은 행렬인 계수를 논리 연산할 때 필수적입니다.
값1와 값2의 논리곱을 반환합니다.
이 함수는 연산자 구문
값1 & 값2
와 똑같습니다. 매개변수를 두 개 넘게 주면,
왼쪽에서 오른쪽으로 차례차례 논리곱을 연산합니다.
(…((값1 & 값2) & 값3) & …)
값1와 값2의 논리합을 반환합니다.
이 함수는 연산자 구문
값1 | 값2
와 똑같습니다. 매개변수를 두 개 넘게 주면, 왼쪽에서
오른쪽으로 차례차례 논리곱을 연산합니다.
(…((값1 | 값2) | 값3) | …)