C 관계 및 같음 연산자C Relational and Equality Operators

이진 관계형 연산자와 같음 연산자는 첫 번째 피연산자와 두 번째 피연산자를 비교하여 지정된 관계의 유효성을 테스트합니다.The binary relational and equality operators compare their first operand to their second operand to test the validity of the specified relationship. 테스트된 관계가 true이면 관계식 결과는 1이고, 테스트된 관계가 false이면 결과는 0입니다.The result of a relational expression is 1 if the tested relationship is true and 0 if it is false. 결과의 형식은 int입니다.The type of the result is int.

구문Syntax

relational-expression:relational-expression:
shift-expressionshift-expression

relational-expression < shift-expressionrelational-expression < shift-expression

relational-expression > shift-expressionrelational-expression > shift-expression

relational-expression <= shift-expressionrelational-expression <= shift-expression

relational-expression >= shift-expressionrelational-expression >= shift-expression

equality-expression:equality-expression:
relational-expressionrelational-expression

equality-expression == relational-expressionequality-expression == relational-expression

equality-expression != relational-expressionequality-expression != relational-expression

관계형 연산자와 같음 연산자는 다음 관계를 테스트합니다.The relational and equality operators test the following relationships:

연산자Operator 테스트되는 관계Relationship Tested
< 첫 번째 피연산자가 두 번째 피연산자보다 작음First operand less than second operand
> 첫 번째 피연산자가 두 번째 피연산자보다 큼First operand greater than second operand
<= 첫 번째 피연산자가 두 번째 피연산자보다 작거나 같음First operand less than or equal to second operand
>= 첫 번째 피연산자가 두 번째 피연산자보다 크거나 같음First operand greater than or equal to second operand
== 첫 번째 피연산자가 두 번째 피연산자와 같음First operand equal to second operand
!= 첫 번째 피연산자가 두 번째 피연산자와 같지 않음First operand not equal to second operand

위 목록에 있는 처음 네 연산자의 우선 순위가 같음 연산자(==!=)보다 높습니다.The first four operators in the list above have a higher precedence than the equality operators (== and !=). C++ 연산자의 우선 순위와 결합성 표에서 우선 순위 정보를 참조하세요.See the precedence information in the table Precedence and Associativity of C Operators.

피연산자는 정수 계열, 부동 또는 포인터 형식일 수 있습니다.The operands can have integral, floating, or pointer type. 피연산자의 형식은 서로 다를 수 있습니다.The types of the operands can be different. 관계형 연산자는 정수 계열 및 부동 형식 피연산자에 대한 일반적인 산술 변환을 수행합니다.Relational operators perform the usual arithmetic conversions on integral and floating type operands. 또한 관계형 연산자와 같음 연산자에서 다음과 같은 피연산자 형식의 조합을 사용할 수 있습니다.In addition, you can use the following combinations of operand types with the relational and equality operators:

  • 모든 관계형 연산자나 같음 연산자의 피연산자는 둘 다 동일한 형식에 대한 포인터일 수 있습니다.Both operands of any relational or equality operator can be pointers to the same type. 같음(==) 및 같지 않음(!=) 연산자의 경우 비교의 결과는 두 개의 포인터가 동일한 메모리 위치를 가리키는지 여부를 나타냅니다.For the equality (==) and inequality (!=) operators, the result of the comparison indicates whether the two pointers address the same memory location. 다른 관계형 연산자(<, >, <= 및 >=)의 경우 비교의 결과는 가리킨 개체에 대한 두 메모리 주소의 상대적 위치를 나타냅니다.For the other relational operators (<, >, <=, and >=), the result of the comparison indicates the relative position of the two memory addresses of the objects pointed to. 관계형 연산자는 오프셋만 비교합니다.Relational operators compare only offsets.

    포인터 비교는 같은 개체의 부분에 대해서만 정의됩니다.Pointer comparison is defined only for parts of the same object. 포인터가 배열의 멤버를 참조하는 경우 비교는 해당 아래 첨자의 비교와 동일합니다.If the pointers refer to members of an array, the comparison is equivalent to comparison of the corresponding subscripts. 첫 번째 배열 요소의 주소는 마지막 요소의 주소보다 "작습니다."The address of the first array element is "less than" the address of the last element. 구조체의 경우 나중에 선언된 구조체 멤버에 대한 포인터는 구조체에서 이전에 선언된 멤버에 대한 포인터보다 "큽니다."In the case of structures, pointers to structure members declared later are "greater than" pointers to members declared earlier in the structure. 같은 공용 구조체의 멤버에 대한 포인터는 동일합니다.Pointers to the members of the same union are equal.

  • 포인터 값을 상수 값 0과 비교하여 같은지(==) 또는 같지 않은지(!=)를 확인할 수 있습니다.A pointer value can be compared to the constant value 0 for equality (==) or inequality (!=). 값이 0인 포인터를 "null" 포인터라고 합니다. 즉, 이러한 포인터는 유효한 메모리 위치를 가리키지 않습니다.A pointer with a value of 0 is called a "null" pointer; that is, it does not point to a valid memory location.

  • 같음 연산자는 관계형 연산자와 동일한 규칙을 따르지만 추가 가능성을 허용합니다. 포인터를 값이 0인 상수 정수 식과 비교하거나 void에 대한 포인터와 비교할 수 있습니다.The equality operators follow the same rules as the relational operators, but permit additional possibilities: a pointer can be compared to a constant integral expression with value 0, or to a pointer to void. 두 포인터가 모두 null 포인터인 경우는 동일한 것으로 비교됩니다.If two pointers are both null pointers, they compare as equal. 같음 연산자는 세그먼트와 오프셋을 모두 비교합니다.Equality operators compare both segment and offset.

예제Examples

아래 예제에서는 관계형 연산자와 같음 연산자를 보여 줍니다.The examples below illustrate relational and equality operators.

int x = 0, y = 0;  
if ( x < y )  

xy가 같기 때문에 이 예제의 식은 0 값을 생성합니다.Because x and y are equal, the expression in this example yields the value 0.

char array[10];  
char *p;  

for ( p = array; p < &array[10]; p++ )  
    *p = '\0';  

이 예제에서는 array의 각 요소를 null 문자 상수로 설정합니다.The fragment in this example sets each element of array to a null character constant.

enum color { red, white, green } col;  
   .  
   .  
   .  
   if ( col == red )  
   .  
   .  
   .  

이러한 문은 col 태그를 사용하여 color이라는 열거형 변수를 선언합니다.These statements declare an enumeration variable named col with the tag color. 언제든지 변수는 정수 값 0, 1 또는 2를 포함할 수 있으며, 이러한 값은 열거형 집합 color의 요소 중 하나인 빨간색, 흰색 또는 녹색을 각각 나타냅니다.At any time, the variable may contain an integer value of 0, 1, or 2, which represents one of the elements of the enumeration set color: the color red, white, or green, respectively. if 문이 실행될 때 col에 0이 포함되어 있는 경우 if에 종속된 모든 문이 실행됩니다.If col contains 0 when the if statement is executed, any statements depending on the if will be executed.

참고 항목See Also

관계형 연산자: <, >, <= 및 >= Relational Operators: <, >, <=, and >=
같음 연산자: == 및 !=Equality Operators: == and !=