이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

논리 연산자: 쇼트서킷 && ||

쇼트서킷을 사용한 논리 연산

설명

예제

expr1 && expr2쇼트서킷 동작을 사용한 논리 AND 연산을 나타냅니다. 즉, expr1이 논리값 0(false)인 경우 expr2는 실행되지 않습니다. 각 표현식은 논리형 스칼라 결과를 갖습니다.

예제

expr1 || expr2쇼트서킷 동작을 사용한 논리 OR 연산을 나타냅니다. 즉, expr1이 논리값 1(true)인 경우 expr2는 실행되지 않습니다. 각 표현식은 논리형 스칼라 결과를 갖습니다.

예제

모두 축소

두 개의 벡터를 만듭니다.

X = [1 0 0 1 1];
Y = [0 0 0 0 0];

XY를 쇼트서킷 OR 연산자와 실행하면 오류가 반환됩니다. 쇼트서킷 연산자는 스칼라 논리 조건만 사용하여 동작을 수행합니다.

any 함수와 all 함수를 사용하여 각 벡터를 단일 논리 조건으로 축소시킵니다.

any(X) || any(Y)
ans = logical
   1

표현식이 1 OR 0과 같으므로 첫 번째 조건인 any(X)만 계산한 후 논리값 1(true)이 됩니다.

두 번째 조건이 첫 번째 조건에 종속되는 논리문을 지정합니다. 다음 명령문에서 인자 b가 0인 경우에는 오른쪽의 관계 연산을 실행하는 것이 의미가 없습니다.

b = 1;
a = 20;
x = (b ~= 0) && (a/b > 18.5)
x = logical
   1

결과는 논리값 1(true)입니다. 그러나 (b ~= 0)false일 경우 MATLAB®에서는 전체 표현식이 false인 것으로 간주하고 표현식의 실행을 조기에 종료합니다.

b = 0으로 지정하고 동일한 표현식을 실행합니다.

b = 0;
x = (b ~= 0) && (a/b > 18.5)
x = logical
   0

결과는 논리값 0(false)입니다. 첫 번째 명령문이 논리값 0(false)으로 실행되므로 표현식은 쇼트서킷됩니다.

'File''Format'이라는 이름의 필드를 가진 구조체를 만듭니다.

S = struct('File',{'myGraph'},'Format',[])
S = struct with fields:
      File: 'myGraph'
    Format: []

쇼트서킷 표현식은 여러 조건이 true여야 하는 if 문에서 유용하게 사용됩니다. 첫 번째 표현식이 true일 경우에만 두 번째 표현식을 실행하는 방식으로 각 조건을 작성할 수 있습니다.

S'Format'이라는 이름의 빈 필드를 갖는 경우만 실행되는 if 문을 지정합니다.

if isfield(S,'Format') && isempty(S.Format)
  S.Format = '.png';
end 
S
S = struct with fields:
      File: 'myGraph'
    Format: '.png'

첫 번째 조건은 'Format'S 구조체의 필드 이름인지 테스트합니다. 그런 다음 두 번째 명령문이 Format 필드가 비어 있는지 여부를 테스트합니다. 두 번째 조건은 첫 번째 조건에 종속됩니다. 첫 번째 조건이 true가 아니라면 두 번째 조건도 true가 될 수 없습니다. S'Format'이라는 이름의 빈 필드가 있으므로 위의 명령문이 실행되고 S.Format'.png' 값이 할당됩니다.

세부 정보

모두 축소

논리 쇼트서킷

논리 쇼트서킷을 적용하면 첫 번째 피연산자 expr1로 결과를 완전하게 구할 수 없는 경우에만 두 번째 피연산자 expr2가 실행됩니다.

논리 AND 및 OR의 속성으로 인해 모든 조건을 평가하기 전에 논리식의 결과가 완전히 결정될 수도 있습니다. and 논리 연산자는 표현식의 어느 한 조건이라도 false인 경우 논리값 0(false)을 반환합니다. or 논리 연산자는 표현식의 어느 한 조건이라도 true인 경우 논리값 1(true)을 반환합니다. 이러한 값이 나오면 조기에 논리식의 실행이 종료되며, 이 경우 표현식이 쇼트서킷되었다고 말합니다.

예를 들어, MATLAB®A && B 표현식에서 조건 A가 false이면 조건 B를 실행하지 않습니다. 조건 A가 false이면 B의 값은 연산의 결과에 영향을 주지 않습니다.

if 또는 while 루프 표현식에 사용되는 경우에 한해, 요소별 &| 연산자는 쇼트서킷을 사용하여 표현식을 실행합니다.

참고

쇼트서킷 방식으로 연산을 실행하려면 항상 && 연산자와 || 연산자를 사용해야 합니다. 실행 결과가 논리형 스칼라가 아닌 표현식에 쇼트서킷 방식의 & 연산자와 | 연산자를 사용하면 예기치 않은 결과를 얻게 될 수 있습니다.

R2006a 이전에 개발됨