C# 정수(int)의 최대값
C#에서 int(32비트 부호 있는 정수)가 표현할 수 있는 최대값은 2,147,483,647입니다. 이는 2³¹ − 1에 해당하는 값으로, 코드에서는 int.MaxValue 상수를 통해 확인할 수 있습니다.
반대로 최소값은 -2,147,483,648이며, int.MinValue로 나타낼 수 있습니다. 만약 이 범위를 넘어서는 큰 수를 다루어야 한다면 64비트 정수형인 long을 사용하는 것이 좋습니다.
아래 표는 C#의 주요 데이터 형식과 각 형식이 표현할 수 있는 값의 범위, 그리고 기본값을 정리한 것입니다.
| 형식 | 설명 | 범위 | 기본값 |
|---|---|---|---|
| bool | 부울 값 | True 또는 False | False |
| byte | 8비트 부호 없는 정수 | 0 ~ 255 | 0 |
| char | 16비트 유니코드 문자 | U+0000 ~ U+ffff | '\0' |
| decimal | 28~29자리 유효 숫자를 가지는 128비트 고정밀 소수 | (-7.9 × 10²⁸ ~ 7.9 × 10²⁸) / 10⁰~²⁸ | 0.0M |
| double | 64비트 배정밀도 부동 소수점 형식 | ±5.0 × 10⁻³²⁴ ~ ±1.7 × 10³⁰⁸ | 0.0D |
| float | 32비트 단정밀도 부동 소수점 형식 | -3.4 × 10³⁸ ~ +3.4 × 10³⁸ | 0.0F |
| int | 32비트 부호 있는 정수 형식 | -2,147,483,648 ~ 2,147,483,647 | 0 |
| long | 64비트 부호 있는 정수 형식 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | 0L |
| sbyte | 8비트 부호 있는 정수 형식 | -128 ~ 127 | 0 |
| short | 16비트 부호 있는 정수 형식 | -32,768 ~ 32,767 | 0 |
| uint | 32비트 부호 없는 정수 형식 | 0 ~ 4,294,967,295 | 0 |
| ulong | 64비트 부호 없는 정수 형식 | 0 ~ 18,446,744,073,709,551,615 | 0 |
| ushort | 16비트 부호 없는 정수 형식 | 0 ~ 65,535 | 0 |
오버플로우 주의 사항
정수형 변수에 해당 자료형의 범위를 초과하는 값을 대입하거나 연산하면 오버플로우(overflow)가 발생하여 예기치 않은 결과가 나올 수 있습니다. 이를 방지하려면 checked 블록으로 연산을 감싸 오버플로우 검사를 활성화하거나, 처음부터 더 넓은 범위를 지원하는 자료형(long, ulong 등)을 사용하는 것이 안전합니다.