정수
정수 (Integers)
부호 있는 정수 타입이 다섯 개, 부호 없는 정수 타입이 다섯 개 있어요:
| Type | Length | Minimum Value | Maximum Value |
|---|---|---|---|
| Int8 | 8 | -128 | 127 |
| Int16 | 16 | −32,768 | 32,767 |
| Int32 | 32 | −2,147,483,648 | 2,147,483,647 |
| Int64 | 64 | −263 | 263 - 1 |
| Int128 | 128 | −2127 | 2127 - 1 |
| UInt8 | 8 | 0 | 255 |
| UInt16 | 16 | 0 | 65,535 |
| UInt32 | 32 | 0 | 4,294,967,295 |
| UInt64 | 64 | 0 | 264 - 1 |
| UInt128 | 128 | 0 | 2128 - 1 |
정수 리터럴은 선택적인 + 또는 - 부호로 시작하고, 그 뒤에 숫자와 밑줄의 나열이 오며, 선택적으로 접미사(suffix)가 붙습니다. 접미사가 없으면 리터럴 값이 Int32 범위 안에 들어올 때 타입이 Int32가 되고, 그렇지 않으면 Int64가 됩니다. Int64 범위를 벗어나는 정수는 반드시 접미사를 붙여야 해요:
1 # Int32
1_i8 # Int8
1_i16 # Int16
1_i32 # Int32
1_i64 # Int64
1_i128 # Int128
1_u8 # UInt8
1_u16 # UInt16
1_u32 # UInt32
1_u64 # UInt64
1_u128 # UInt128
+10 # Int32
-20 # Int32
2147483647 # Int32
2147483648 # Int64
-2147483648 # Int32
-2147483649 # Int64
9223372036854775807 # Int64
9223372036854775808_u64 # UInt64
Int64 최댓값보다 크지만 UInt64 범위 안에서 표현 가능한 접미사 없는 정수 리터럴(예: 9223372036854775808)은 더 이상 권장되지 않아요(deprecated).
접미사 앞의 밑줄 _은 선택적입니다.
밑줄을 쓰면 일부 숫자를 더 읽기 쉽게 만들 수 있어요:
1_000_000 # better than 1000000
2진수는 0b로 시작합니다:
0b1101 # == 13
8진수는 0o로 시작해요:
0o123 # == 83
16진수는 0x로 시작합니다:
0xFE012D # == 16646445
0xfe012d # == 16646445
출처: Crystal 공식 문서
더 알아보기 (Learn more)
- 부동소수점 리터럴 (Floats) — 실수 리터럴
- 타입 문법 (Type grammar) — 타입 표기법