이전: 원소 단위 논리 연산자, 상위 문서: 논리 표현식 [차례][찾아보기]
if
문과
while
문의 조건식이 스칼라 값으로 암묵적으로 변환되기 때문에 옥타브의 원소 단위 논리 연산자로도 논리 연산 대부분에
충분합니다. 그러나 진리값을 사실상 도출한 그 즉시 논리 표현식을 멈추는 것이 좋을 때도 있습니다. 옥타브의 짧은 논리 연산자가 이
방식으로 작동합니다.
논리1 && 논리2
all (boolean1(:))
와 똑같은 방식으로 표현식 논리1을 평가하여
스칼라로 바꿉니다. all (boolean1(:))
이 거짓이면, 전체 표현식 결과가 0이 됩니다.
all (boolean1(:))
이 참이면, all (논리값2(:))
와
똑같은 방식으로 표현식 논리2을 평가하여 스칼라로 바꿉니다.
all (논리값2(:))
가 참이면 전체 표현식 결과가 1이 됩니다. all (논리값2(:))
가
거짓이면, 전체 표현식 결과가 0이 됩니다.
경고: 논리1
이 빈 행렬이면
all (boolean1(:))
평가 규칙에 예외가 생깁니다. 빈 행렬의 진리값은 언제나
거짓
이므로 [] && true
는 거짓
이고,
all ([])
는 참
입니다.
논리1 || 논리2
all (boolean1(:))
와 똑같은 방식으로 표현식 논리1을 평가하여
스칼라로 바꿉니다. all (boolean1(:))
이 참이면, 전체 표현식 결과가 1이 됩니다.
all (boolean1(:))
이 거짓이면, all (논리값2(:))
와
똑같은 방식으로 표현식 all (논리값2(:))
을 평가하여 스칼라로 바꿉니다.
all (논리값2(:))
가 참이면 전체 표현식 결과가 1이 됩니다. all (논리값2(:))
가
거짓이면, 전체 표현식 결과가 0이 됩니다.
경고: 빈 행렬의 진리값은 언제나 거짓
입니다. [] && true
는
거짓
이고,
all ([])
는 참
입니다.
두 계수가 전체 표현식의 진리값을 판단하기 전까지 평가되지 않는다는 점이 중요합니다.예를 들어, 아래 표현식에서
a && b++
변수 a가 0이 아닐 때만 변수 b가 증가합니다.
이를 약간 간결한 부호를 작성하는 데에 사용할 수 있습니다. 예를 들어, 아래처럼 작성하여,
function f (a, b, c) if (nargin > 2 && ischar (c)) …
존재하지 않는 매개변수 평가를 피하기 위하여 if
문 두 개를 쓰지 않아도 됩니다. 단박 논리 연산자가 없으면, 위
내용을 아래처럼 작성하여야 합니다.
function f (a, b, c) if (nargin > 2) if (ischar (c)) …
아래와 같이 작성하여서,
function f (a, b, c) if (nargin > 2 & ischar (c)) …
f
에 매개변수 한두 개만 달고 호출하면, 연산자 ‘&’는 계수 두 개와
함께 평가하여야 하기 때문에 오류가 발생합니다.
매트랩은 if
문과
while
문에서 진리 표현을 사용하면 연산자 ‘&’와
‘|’가 단박 논리 연산자처럼 기능하는 특별한 행동을 합니다. 옥타브도 호환을 위하여 이 방법을 채용하기는
하지만, 이 방식의 ‘&’와 ‘|’ 사용은 매우 권장되지 않으며,
경고를 출력합니다. 단박 논리 연산자가 필요하면 무조건 ‘&&’와 ‘||’
연산자를 사용하십시오.
마지막으로, 옥타브는 삼항 연산자(?:)를 지원하지 않습니다. 단박 논리 연산이 중요하지 않으면, ifelse
함수를 대신 사용합니다.
본의 값에 따라 참_값이나 거짓_값의 원소를 합칩니다.
본이 논리 스칼라이면, 나머지 두 매개변수에는 아무 값이나 가능합니다. 그 외에는, 본은 반드시 논리 배열이어야 하고, 참_값과 거짓_값은 둘 다 분류 배열 또는 낱칸 배열이어야 합니다. 본이 스칼라인 경우에는, 본이 참이면 참_값을 반환하고, 본이 거짓이면 거짓_값을 반환합니다.
본이 배열이면, 참_값과 거짓_값이 반드시 스칼라이거나 본과 차원이 같은 배열이어야 합니다. 결과는 아래와 같습니다.
result(mask) = tval(mask); result(! mask) = fval(! mask);
본에는 모든 수치 자료형이 가능하며, 해당 내용은 논리 값으로 먼저 바뀝니다.
이전: 원소 단위 논리 연산자, 상위 문서: 논리 표현식 [차례][찾아보기]