본문 바로가기
컴퓨터 공학/Swift

[스위프트] 데이터 저장 시 주의할 점(+ 기본형 Int가 있는 이유)

by hahehohoo 2020. 2. 24.
반응형

■ 개요

 

1 float와 Double에서

2 Int에서


1 float와 Double에서

 

float와 Double에 값을 넣어도 실제로 저장되는 값의 범위는 제한적이기 때문에 잘 확인해야 한다. 

 

 

 


2 Int에서

 

스위프트에 Int 종류에는 다음 것들이 있다. 

 

저 중에서 Int8을 골라서 이 자료형에 저장할 수 있는 데이터 최소, 최대값을 알려면 .min, .max을 입력하면 된다. 

 

 

 

Int8은 signed(부호있는) integer이기 때문에 -128부터 127까지 저장할 수 있다. 

 

 

따라서 -128~127 범위 밖의 데이터를 저장하면

 

 

overflow(오버플로우) 에러발생한다. 

 

 

타입이 허용하는 범위의 데이터를 저장하는 것이 중요하다. 

 

또한 Int의 (option 누르고 나오는) Discussion에서 32-bit 플랫폼에서는 Int32랑 같고, 64비트 플랫폼에서는 Int64랑 같다고 한다.

즉, 플랫폼마다 저장할 수 있는 데이터의 범위가 다르다는 것이다.

 

예를 들어 아이폰 5 이후에는 64비트로 데이터 처리하기 때문에

앱 개발자가 앱을 64비트에만 맞춰서 만들면 아이폰 5 전 기기에서는 제대로 작동하지 않을 수 있다.  

 

왜 아이폰에서는 Int를 정수 기본형으로 만들어서 쓰는 걸까?

 

그 이유는 32비트 CPU에서는 32비트,즉 4바이트 Integer 데이터 타입을, 

64비트 CPU에서는 64비트,즉 8바이트 Integer 데이터 타입을 가장 효율적으로 처리할 수 있기 때문이다.

 

그래서 각각의 CPU마다 최적의 성능을 내기 위해 각각의 플랫폼에 맞는 사이즈로 처리할 수 있는 데이터 타입을 만든 것이다. 

 

 


 

 마무리

 

1 float와 Double에서

저장할 수 있는 범위가 다르기 때문에 연산시 오차가 날 수 있다. 

 

2 Int에서

변수에 Int종류를 따로 표시하지 않으면 기본 Int로 적용되어 플랫폼마다 다른 범위의 데이터가 저장된다. 

 

 

 

--------------------------

iOS프로그래밍 학습을 위해

더 많은 예제 보러가기 

--------------------------

 

반응형


댓글