비교 연산자

비교 연산자 (Comparison operators)

값의 순서를 비교할 때 쓰는 연산자들이에요. <(작다), >(크다), <=(작거나 같다), >=(크거나 같다)를 통칭해 비교 연산자라고 하고, 관계 연산자라고도 불러요. 이 연산자들이 피연산자를 비교해서 순서를 판단해 주죠. C#의 모든 정수형부동 소수점형이 이 연산자들을 지원해요.

출처: Comparison operators (C# reference)

본문

먼저 한 가지 짚고 넘어갈 게 있어요. ==, <, >, <=, >= 연산자에서 피연산자 중 하나라도 숫자가 아니면(xref:System.Double.NaN?displayProperty=nameWithType 또는 xref:System.Single.NaN?displayProperty=nameWithType일 때) 연산 결과는 항상 false가 돼요. 즉 NaN은 어떤 double(또는 float) 값과 비교해도 크지도, 작지도, 같지도 않다는 뜻이에요. NaN끼리 비교해도 마찬가지예요. 자세한 내용과 예시는 xref:System.Double.NaN?displayProperty=nameWithType 또는 xref:System.Single.NaN?displayProperty=nameWithType 참조 문서를 확인해 주세요.

char 형식도 비교 연산자를 지원해요. char 피연산자를 쓰면 대응하는 문자 코드끼리 비교가 돼요.

열거형도 비교 연산자를 지원해요. 같은 enum 형식의 피연산자라면, 밑바탕이 되는 정수 형식의 값으로 비교해요.

한편 ==!= 연산자는 (같음 연산자) 피연산자가 같은지 다른지를 확인하는 용도랍니다.

작다 연산자 <

< 연산자는 왼쪽 피연산자가 오른쪽 피연산자보다 작으면 true, 그렇지 않으면 false를 돌려줘요.

Console.WriteLine(7.0 < 5.1);   // output: False
Console.WriteLine(5.1 < 5.1);   // output: False
Console.WriteLine(0.0 < 5.1);   // output: True

Console.WriteLine(double.NaN < 5.1);   // output: False
Console.WriteLine(double.NaN >= 5.1);  // output: False

크다 연산자 >

> 연산자는 왼쪽 피연산자가 오른쪽 피연산자보다 크면 true, 그렇지 않으면 false를 돌려줘요.

Console.WriteLine(7.0 > 5.1);   // output: True
Console.WriteLine(5.1 > 5.1);   // output: False
Console.WriteLine(0.0 > 5.1);   // output: False

Console.WriteLine(double.NaN > 5.1);   // output: False
Console.WriteLine(double.NaN <= 5.1);  // output: False

작거나 같다 연산자 <=

<= 연산자는 왼쪽 피연산자가 오른쪽 피연산자보다 작거나 같으면 true, 그렇지 않으면 false를 돌려줘요.

Console.WriteLine(7.0 <= 5.1);   // output: False
Console.WriteLine(5.1 <= 5.1);   // output: True
Console.WriteLine(0.0 <= 5.1);   // output: True

Console.WriteLine(double.NaN > 5.1);   // output: False
Console.WriteLine(double.NaN <= 5.1);  // output: False

크거나 같다 연산자 >=

>= 연산자는 왼쪽 피연산자가 오른쪽 피연산자보다 크거나 같으면 true, 그렇지 않으면 false를 돌려줘요.

Console.WriteLine(7.0 >= 5.1);   // output: True
Console.WriteLine(5.1 >= 5.1);   // output: True
Console.WriteLine(0.0 >= 5.1);   // output: False

Console.WriteLine(double.NaN < 5.1);   // output: False
Console.WriteLine(double.NaN >= 5.1);  // output: False

연산자 오버로드(operator overloading)

사용자 정의 형식에서 <, >, <=, >= 연산자를 오버로드할 수 있어요. 이때 < 또는 > 중 하나를 오버로드하면 <> 둘 다 오버로드해야 하고, <= 또는 >= 중 하나를 오버로드하면 <=>= 둘 다 오버로드해야 해요. 한쪽만 오버로드할 수는 없답니다.

C# 언어 사양

자세한 내용은 C# 언어 사양관계 및 형식 테스트 연산자 섹션을 참고해 주세요.

더 알아보기