C 논리 연산자
논리 연산자는 논리 AND( &&
) 및 논리 OR( ||
) 연산자를 수행합니다.
구문
logical-AND-expression
:
inclusive-OR-expression
logical-AND-expression
&&
inclusive-OR-expression
logical-OR-expression
:
logical-AND-expression
logical-OR-expression
||
logical-AND-expression
설명
논리 연산자는 일반적인 산술 변환을 수행하지 않습니다. 대신 각 피연산자가 0과 같은지를 평가합니다. 논리 연산의 결과는 0 또는 1입니다. 결과의 형식은 int
입니다.
C 논리 연산자는 아래에 설명되어 있습니다.
연산자 | 설명 |
---|---|
&& |
논리 AND 연산자는 두 피연산자 모두 0이 아니면 값 1을 생성합니다. 피연산자 중 하나가 0이면 결과는 0입니다. 논리 AND 연산의 첫 번째 피연산자가 0이면 두 번째 피연산자는 평가되지 않습니다. |
|| |
논리 OR 연산자는 피연산자에 대해 포함적 OR 연산을 수행합니다. 두 피연산자 모두 값이 0이면 결과는 0입니다. 피연산자 중 하나가 0이 아니면 결과는 1입니다. 논리 OR 연산의 첫 번째 피연산자 값이 0이 아니면 두 번째 피연산자는 평가되지 않습니다. |
논리 AND 및 논리 OR 식의 피연산자는 왼쪽에서 오른쪽으로 계산됩니다. 첫 번째 피연산자의 값이 작업의 결과를 결정하는 데 충분한 경우 두 번째 피연산자는 평가되지 않습니다. 이 효과를 “단락” 평가라고 합니다. 식의 첫 번째 피연산자 뒤 시퀀스 포인트가 있습니다. 자세한 내용은 시퀀스 포인트를 참조하세요.
예
다음 예제에서는 논리 연산자를 보여 줍니다.
int w, x, y, z;
if ( x < y && y < z )
printf( "x is less than z\n" );
이 예제에서는 printf
함수는 x
가 y
보다 작고 y
가 z
보다 작은 경우 메시지를 출력하도록 호출됩니다. x
가 y
보다 크면 두 번째 피연산자(y < z
)는 평가되지 않고 아무 것도 출력되지 않습니다. 논리 비교를 작성할 때 고려해야 하는 단락 평가의 또 다른 사례입니다. 그렇지 않으면 코드가 두 번째 피연산자를 평가하는 부작용에 의존하는 경우 문제가 발생할 수 있습니다.
printf( "%d" , (x == w || x == y || x == z) );
이 예제에서 x
가 w
, y
또는 z
와 같을 경우 printf
함수에 대한 두 번째 인수는 true로 계산되고 값 1이 출력됩니다. 그렇지 않으면 false로 계산되고 값 0이 출력됩니다. 조건 중 하나가 true로 확인되면 계산이 중지됩니다.
참조
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기