C 논리 연산자C Logical Operators

논리 연산자는 논리 AND(&&) 및 논리 OR(||) 을 수행합니다.The logical operators perform logical-AND (&&) and logical-OR ( || ) operations.

구문Syntax

logical-AND-expression:logical-AND-expression:
inclusive-OR-expressioninclusive-OR-expression

logical-AND-expression && inclusive-OR-expressionlogical-AND-expression && inclusive-OR-expression

logical-OR-expression:logical-OR-expression:
logical-AND-expressionlogical-AND-expression

logical-OR-expression || logical-AND-expressionlogical-OR-expression || logical-AND-expression

논리 연산자는 일반적인 산술 변환을 수행하지 않습니다.Logical operators do not perform the usual arithmetic conversions. 대신 각 피연산자가 0과 같은지를 평가합니다.Instead, they evaluate each operand in terms of its equivalence to 0. 논리 연산의 결과는 0 또는 1입니다.The result of a logical operation is either 0 or 1. 결과 형식은 int입니다.The result's type is int.

C 논리 연산자는 아래에 설명되어 있습니다.The C logical operators are described below:

연산자Operator 설명Description
&& 논리 AND 연산자는 두 피연산자 모두 0이 아니면 값 1을 생성합니다.The logical-AND operator produces the value 1 if both operands have nonzero values. 피연산자 중 하나가 0이면 결과는 0입니다.If either operand is equal to 0, the result is 0. 논리 AND 연산의 첫 번째 피연산자가 0이면 두 번째 피연산자는 평가되지 않습니다.If the first operand of a logical-AND operation is equal to 0, the second operand is not evaluated.
|| 논리 OR 연산자는 피연산자에 대해 포함적 OR 연산을 수행합니다.The logical-OR operator performs an inclusive-OR operation on its operands. 두 피연산자 모두 값이 0이면 결과는 0입니다.The result is 0 if both operands have 0 values. 피연산자 중 하나가 0이 아니면 결과는 1입니다.If either operand has a nonzero value, the result is 1. 논리 OR 연산의 첫 번째 피연산자 값이 0이 아니면 두 번째 피연산자는 평가되지 않습니다.If the first operand of a logical-OR operation has a nonzero value, the second operand is not evaluated.

논리 AND 및 논리 OR 식의 피연산자는 왼쪽에서 오른쪽으로 계산됩니다.The operands of logical-AND and logical-OR expressions are evaluated from left to right. 첫 번째 피연산자의 값이 작업의 결과를 결정하는 데 충분한 경우 두 번째 피연산자는 평가되지 않습니다.If the value of the first operand is sufficient to determine the result of the operation, the second operand is not evaluated. 이것을 "단락(short-circuit) 계산"이라고 합니다.This is called "short-circuit evaluation." 첫 번째 피연산자 다음에 시퀀스 위치가 있습니다.There is a sequence point after the first operand. 자세한 내용은 시퀀스 위치를 참조하세요.See Sequence Points for more information.

예제Examples

다음 예제에서는 논리 연산자를 보여 줍니다.The following examples illustrate the logical operators:

int w, x, y, z;  

if ( x < y && y < z )  
    printf( "x is less than z\n" );  

이 예제에서는 printf 함수는 xy보다 작고 yz보다 작은 경우 메시지를 출력하도록 호출됩니다.In this example, the printf function is called to print a message if x is less than y and y is less than z. xy보다 크면 두 번째 피연산자(y < z)는 평가되지 않고 아무 것도 출력되지 않습니다.If x is greater than y, the second operand (y < z) is not evaluated and nothing is printed. 두 번째 피연산자에서 다른 이유로 요구되는 파생 작업이 발생하는 경우 이로 인해 문제가 발생할 수 있습니다.Note that this could cause problems in cases where the second operand has side effects that are being relied on for some other reason.

printf( "%d" , (x == w || x == y || x == z) );  

이 예제에서 xw, y 또는 z와 같을 경우 printf 함수에 대한 두 번째 인수는 true로 계산되고 값 1이 출력됩니다.In this example, if x is equal to either w, y, or z, the second argument to the printf function evaluates to true and the value 1 is printed. 그렇지 않으면 false로 계산되고 값 0이 출력됩니다.Otherwise, it evaluates to false and the value 0 is printed. 조건 중 하나가 true로 확인되면 계산이 중지됩니다.As soon as one of the conditions evaluates to true, evaluation ceases.

참고 항목See Also

논리 AND 연산자: && Logical AND Operator: &&
논리 OR 연산자: ||Logical OR Operator: ||