본문 바로가기

Swift 문법

[Swift] 기본 자료형에 대해 알아보자! - 1 (Int, UInt)

반응형

오늘은 Swift에서 제공하는 자료형에 대해 알아봅시다.

Int

image

  • Struct로 되어있음
  • 부호가 있는 정수 값 타입
  • 32bit CPU 라면 Int는 Int32와 크기가 같음
  • 64bit CPU 라면 Int는 Int64와 크기가 같음

Int는 알겠는데.. Int 뒤에 숫자가 붙는거를 처음 보신 분들도 계실꺼에요.

Int8, Int16, Int32, Int64...

예상이 가시나요? 뒤에 붙은 숫자는 bit를 의미합니다.
즉, Int8 자료형의 크기는 8비트 입니다.

Int8은 8비트이므로, -128 ~ 127의 범위를 갖을 수 있습니다.
한 번 확인해 볼까요?

image

Int8, Int16, Int32, Int64, Int 전부 확인해보도록 하죠!

image

UInt

image

  • Struct로 되어있음
  • 부호가 없는 정수 값 타입
  • 32bit CPU 라면 UInt는 UInt32와 크기가 같음
  • 64bit CPU 라면 UInt는 UInt64와 크기가 같음

Int랑 거의 유사하죠? 한 가지 다른 점이 있다면 부호가 없는 정수 값 타입이라고 하네요!

부호가 없다.. 애매한 의미로 받아드려질 수도 있지만, " - " 마이너스 부호가 없는 정수 값 타입이라고 이해하시면 될 것 같아요!

그렇다면 UInt8 은 범위가 어떻게 될까요..?
Int8과 마찬가지로 8비트일텐데.. 부호가 없으니 0 ~ 255의 범위를 갖을 수 있겠네요!

UInt8, UInt16, UInt32, UInt64 전부 마찬가지겠죠?? 한 번 확인해보도록 하겠습니다.

image

Int나 UInt의 차이점을 아시겠나요?? 둘 다 정수 값 타입이라는 점은 동일하지만, UInt는 부호를 가질 수 없습니다.

만약 이 범위를 넘게된다면 어떻게 될까요?

정답은 버퍼 오버플로우로 인해 컴파일오류가 발생합니다.

또한 Swift는 타입에 되게 엄격한 언어이기 때문에 다른 타입이면 연산이 되지 않습니다..

image

Int8과 Int16을 완전 다른 타입으로 인식하기 때문에 그렇습니다.
당연히 Int + UInt도 안되겠죠??

웬만하면 Int 자료형을 사용하시는 것을 추천드립니다.
하지만 Int자료형의 최대 값보다 UInt 자료형의 최대 값이 더 크기 때문에 UInt를 어쩔 수 없이 써야한다면 UInt 자료형을 써야할 것 같아요..

그럴라고 만들어 놓았나?

UInt 자료형의 최대 크기도 초과한다면 어떡할까요..?

저라면 String 자료형을 사용해서 자릿수별로 덧셈하여 구하는 방법을 사용할 것 같은데 아직까지 사용해 본 적은 없네요!

오늘은 정수 값을 다루는 Int, UInt 자료형을 알아 보았습니다.

다음 포스팅에서 다른 자료형에 대해 알아보도록 하죠!

글 읽어주셔서 감사합니다.

틀린내용 지적 환영입니다!

반응형