본문 바로가기
TIL

[240306] 키워드/옵셔널/Int64

by 줍 2024. 3. 6.

1. 계산기 과제를 하면서 operator 라는 변수를 선언하니 이런 오류가 떴다.

operator는 스위프트에서 특정 의미로 사용하겠다고 미리 정해놓은 Keyword 중 하나여서 다른 의미(식별자)로는 사용을 못한다고 한다. 공식문서의 Keywords and Punctuation 에서 확인해볼 수 있다.

 

 

2. 알고리즘 문제풀 때 형변환하고 옵셔널 제거하는 걸 자꾸 깜빡쓰 ..

 

 

3. 알고리즘 문제에서 Int64라는 자료형이 자주 나와서 Int와 차이점이 무엇인지 찾아보았다.

스위프트의 정수형 타입에는 Int, Int8, Int16, Int32, Int64 / UInt8, UInt16, UInt32, UInt64가 있는데,

뒤에 붙은 숫자는 사용하는 비트 수를, U는 부호가 없음(unsigned)을 나타낸다고 한다.

 

각 자료형 별로 저장할 수 있는 정수의 범위는 다음과 같다.

  • Int8: -128 ~ 127
  • Int16: -32768 ~ 32767
  • Int32: -2147483648 ~ 2147483647
  • Int64: -9223372036854775808 ~ 9223372036854775807
  • UInt8: 0 ~ 255
  • UInt16: 0 ~ 65535
  • UInt32: 0 ~ 4294967295
  • UInt64: 0 ~ 18446744073709551615

숫자가 붙지 않은 Int/UInt는 사용하는 컴퓨터의 CPU 환경을 따른다. 즉 64비트 플랫폼을 사용하고 있다면 Int64와 같은 범위를 가진다.

 

왜 이렇게 다양한 타입들이 존재할까?

이전에는 메모리가 적은 환경이 많았기 때문에, 메모리를 효율적으로 아낄 수 있도록 개발했다고 한다. 예를 들어 -128 ~ 127 범위를 벗어나지 않을 것이라고 예상되는 변수는 메모리를 적게 사용하는 Int8 같은 자료형을 사용하도록 했다. 현재는 메모리 부족을 고민할 일이 거의 없어 Int8과 같이 작은 사이즈의 자료형을 쓰는 일이 점점 사라지고 있다고 한다.