C#의 Int16.MinValue 필드는 16비트 부호 있는 정수 타입인 Int16(short)이 가질 수 있는 최솟값을 나타내는 상수입니다. 이 값은 -32768로 고정되어 있으며, 값의 범위를 검사하거나 형 변환 가능 여부를 확인할 때 유용하게 사용됩니다.
Int16의 값 범위
Int16은 16비트 부호 있는 정수로, 다음과 같은 범위를 가집니다.
- 최솟값(Int16.MinValue): -32768
- 최댓값(Int16.MaxValue): 32767
문법(Syntax)
Int16.MinValue 필드의 선언 구문은 다음과 같습니다.
public const short MinValue = -32768;
예제 1 – Int16.MinValue 기본 사용법
다음 예제는 short 변수의 해시 코드, 형식 코드(TypeCode)와 함께 Int16.MinValue와 Int16.MaxValue를 출력하는 방법을 보여줍니다.
using System;
public class Demo {
public static void Main(){
short val1 = 23;
short val2 = 0;
Console.WriteLine("Value1 = "+val1);
Console.WriteLine("Value2 = "+val2);
Console.WriteLine("HashCode for value1 = "+val1.GetHashCode());
Console.WriteLine("HashCode for value2 = "+val2.GetHashCode());
Console.WriteLine("Are they equal? = "+(val1.Equals(val2)));
TypeCode type1 = val1.GetTypeCode();
TypeCode type2 = val2.GetTypeCode();
Console.WriteLine("TypeCode for val1 = "+type1);
Console.WriteLine("TypeCode for val2 = "+type2);
Console.WriteLine("Maximum Value = "+ Int16.MaxValue);
Console.WriteLine("Minimum Value = "+ Int16.MinValue);
}
}실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Value1 = 23 Value2 = 0 HashCode for value1 = 1507351 HashCode for value2 = 0 Are they equal? = False TypeCode for val1 = Int16 TypeCode for val2 = Int16 Maximum Value = 32767 Minimum Value = -32768
예제 2 – long 값을 short로 안전하게 변환하기
Int16.MinValue는 값의 범위를 검사하는 데에도 활용됩니다. 아래 예제에서는 long 배열의 각 요소가 Int16 표현 범위(-32768 ~ 32767) 내에 있는지 확인한 후, 범위 내에 있으면 Convert.ToInt16()으로 변환하고 그렇지 않으면 변환이 불가능하다는 메시지를 출력합니다.
using System;
public class Demo {
public static void Main(){
long[]val = {8998, -899898778, 878787878, -20};
short res;
foreach(long a in val){
if(a >= Int16.MinValue && a <= Int16.MaxValue){
res = Convert.ToInt16(a);
Console.WriteLine("Converted: "+res);
} else {
Console.WriteLine("Not Possible");
}
}
}
}실행 결과
프로그램 실행 시 출력되는 결과는 다음과 같습니다.
Converted: 8998 Not Possible Not Possible Converted: -20
정리
Int16.MinValue는 Int16 타입이 표현할 수 있는 최솟값인 -32768을 담고 있는 상수 필드입니다. 값의 유효 범위를 검사하거나, 더 큰 정수 타입(long 등)의 값을 short로 변환하기 전에 오버플로우 여부를 확인하는 용도로 널리 활용됩니다.