🔥 정수

437자
5분

Swift에서 정수는 소수점 이하 자릿수가 없는 숫자를 의미해요. 예를 들어, 42-23이 정수에 해당하죠. Swift는 정수를 signed(양수, 0, 음수) 또는 unsigned(양수 또는 0) 중 하나로 분류합니다.

let positiveNumber = 42
let negativeNumber = -23
let zeroNumber = 0
swift

Swift는 8, 16, 32, 64비트 형식의 부호 있는 정수와 부호 없는 정수를 제공하는데요. 이들은 C언어와 비슷한 명명 규칙을 따라요. 8비트 부호 없는 정수는 UInt8 타입이고, 32비트 부호 있는 정수는 Int32 타입이 되겠죠.

let unsignedInt: UInt8 = 255
let signedInt: Int32 = -2147483648
swift

Swift의 모든 타입과 마찬가지로, 이 정수 타입들은 대문자로 시작하는 이름을 가집니다.

정수 범위

minmax 속성을 사용하면 각 정수 타입의 최솟값과 최댓값에 접근할 수 있습니다. 아래 코드를 살펴보세요.

let minValue = UInt8.min  // minValue는 0이고, UInt8 타입입니다.
let maxValue = UInt8.max  // maxValue는 255이고, UInt8 타입입니다.
 
print("UInt8 범위: \(minValue) ~ \(maxValue)")
// 출력: "UInt8 범위: 0 ~ 255"
swift

이 속성들의 값은 적절한 크기의 숫자 타입(위 예제에서는 UInt8)으로 되어 있어서, 같은 타입의 다른 값들과 함께 표현식에서 사용할 수 있어요.

let underflowExample = UInt8.min - 1 // 런타임 에러: arithmetic overflow
let overflowExample = UInt8.max + 1 // 런타임 에러: arithmetic overflow
swift

Int

대부분의 경우, 코드에서 특정 크기의 정수를 선택할 필요는 없습니다. Swift는 추가로 Int 정수 타입을 제공하는데, 이는 현재 플랫폼의 기본 워드 크기와 같은 크기를 가져요.

let anInteger = 42 // Int 타입으로 추론됩니다
swift
  • 32비트 플랫폼에서는 IntInt32와 같은 크기를 가집니다.
  • 64비트 플랫폼에서는 IntInt64와 같은 크기를 가지죠.

특정 크기의 정수를 다룰 필요가 없다면, 코드에서 정수 값에는 항상 Int를 사용하세요. 이는 코드의 일관성과 상호운용성을 높여줍니다.

let num1: Int = 100
let num2: Int = -42
 
print(num1 + num2) // 58
swift

32비트 플랫폼에서도 Int-2,147,483,648에서 2,147,483,647 사이의 어떤 값이라도 저장할 수 있고, 많은 정수 범위에 충분히 큰 크기를 가지고 있어요.

UInt

Swift는 부호 없는 정수 타입 UInt도 제공하는데, 이 역시 현재 플랫폼의 기본 워드 크기와 같은 크기를 가집니다.

let unsignedInteger: UInt = 100
swift
  • 32비트 플랫폼에서는 UIntUInt32와 같은 크기를 가져요.
  • 64비트 플랫폼에서는 UIntUInt64와 같은 크기를 가지죠.

이렇게 정수의 크기와 범위, 그리고 IntUInt 타입에 대해 알아봤는데요. 코드에서 정수를 다룰 때 이 개념들을 잘 이해하고 적절한 타입을 선택하는 것이 중요해요.

let num1 = 42 // Int
let num2: UInt = 30 // UInt
 
// let sum = num1 + num2 // 컴파일 에러: Binary operator '+' cannot be applied to operands of type 'Int' and 'UInt'
let sum = num1 + Int(num2) // Int와 UInt는 섞어서 사용할 수 없으므로, 같은 타입으로 변환해줘야 합니다.
swift

대부분의 경우 Int를 사용하되, 때로는 더 작은 크기나 부호 없는 정수가 필요할 수도 있겠죠? 그럴 때는 적당한 타입을 골라 사용하면 됩니다.