본문 바로가기
🍎iOS프로그래밍/오늘의 공부

Swift의 데이터 타입, 상수(let), 변수(var), 타입 추론/ iOS 프로그래밍

by 둥둥동동# 2021. 9. 17.
728x90

 

 

Swift의 데이터타입 

 

Swift도 타 언어처럼 Int, UInt, Bool, Double, Float 등의 다양한 자료형이 존재합니다

그리고 스위프트만의 Nil, AnyObject 개념도 존재합니다

스위프트는 타입 안전 언어로 데이터 타입에 엄격한 편입니다 

변수의 데이터타입이 식별되면 그 변수는 다른 타입의 데이터를 저장할 수 없게 됩니다

 

타입별 데이터 표현가능 크기는 하단의 표에 기록해 두었습니다

표 이동

 

이 데이터가 식별되는 방법은 2가지가 있습니다

1. 타입 어노테이션 (명시)

2. 타입추론

 

타입 어노테이션은 변수, 상수를 선언한 시점에서 타입을 명시하는 방법

타입추론은 변수, 상수를 선언할 때 타입을 명시하지 않고 컴파일러가 타입을 정하는 방식입니다

 

Bool

 

참(true), 거짓(flase)만 가질 수 있는 타입

 

var someBool: Bool = true
print(someBool)// true
someBool = 1 //컴파일에러, Bool타입엔 정수할당 불가
cs

 

 

 

Int

 

정수를 저장하기 위한 타입

Int8, Int16등 다양한 비트의 정수를 지원하지만

기본으로 제공되는 Int형(64비트)가 권장됩니다

 

var someInt: Int = 23
print(someInt) //23
someInt = 10.5 //컴파일에러
cs

 

 

Int의 표현 범위는 다음과 같습니다

 

print("Int = \(Int.min) ~ \(Int.max)")
//약 -922경 ~ 922경
print("Int32 = \(Int32.min) ~ \(Int32.max)")
//약 -21억 ~ 21억
cs

 

 

 

UInt

 

부호가 없는 정수형 타입입니다

1
2
3
var someUInt: UInt = 23
print(someUInt) //23
someUInt = -10 //컴파일에러
cs

※UInt타입에 표현범의 내의 다른 정수타입(Int)를 넣으도 컴파일 에러가 발생한다

 

UInt의 표현범위는 다음과 같습니다

1
2
3
4
print("UInt = \(UInt.min) ~ \(UInt.max)")
//약 0 ~ 1844경
print("UInt32 = \(UInt32.min) ~ \(UInt32.max)")
//약 0 ~ 42억
 
cs

 

 

 

Float

 

실수를 저장하기 위한 타입, 32비트로 소수점 6자리 정확도 입니다

1
2
var someFloat: Float = 23.25
print(someFloat) //23.25
cs

 

 

Double

 

실수를 저장하기 위한 타입, 64비트로 소수점 15자리 정확도 입니다

1
2
var someDouble: Double = 16.9
print(someDouble) //16.9
cs

※Double타입에 Float형을 넣어도 컴파일 에러가 발생한다

 

 

 

Character

 

문자를 저장하기 위한 타입, ''가 아닌 ""으로 문자를 감싸야 하며 유니코드를 지원합니다

1
2
3
4
var myChar1: Character = "A"
var myChar2: Character = "🤑"
print(myChar1, myChar2)// A 🤑
myChar1 = "abc"//컴파일 에러
cs

※변수 선언할 때 Character를 생략하면 String형이 되어버림

 

 

 

String

 

문자열을 저장하기 위한 타입, 문자열 보간을 통해 변수, 상수, 함수호출 등의 조합으로 새로운 문자열을 만들 수 있다

1
2
3
var myString: String = "나는 "
var message:String = myString + "공부한다 " + "🤓"
print(message) // 나는 공부한다 🤓
cs

 

 

 

Any

 

 

 

Nil

 

 

var 

let

 

 

 

자료형의 종류 및 표현범위

 

타입 설명 표현범위
Bool 참, 거짓  True / False
Int(64) 기본 정수형 타입, 64비트 이다 -9223372036854775808 ~
9223372036854775807
Int8 8비트의 정수형 타입 -128 ~ 127
Int16 16비트의 정수형 타입 -32768 ~ 32767
Int32 32비트의 정수형 타입 -2147483648 ~ -2147483647
UInt(64) 부호가 없는 정수형 타입, 64비트 이다 0 ~ 18446744073709551615
UInt8 부호가 없는 8비트 정수형 타입 0 ~ 255
UInt16 부호가 없는 8비트 정수형 타입 0 ~ 65535
UInt32 부호가 없는 8비트 정수형 타입 0 ~ 4294967295
Float 실수형 타입, 소수점6자리 정확도 1.175494e-38 ~
3.402823e+38
Double 실수형 타입, 소수점15자리 정확도 2.225073858507201e-308 ~
1.797693134862316e+308
Character 문자 하나를 가지는 타입 -
String 문자열을 가지는 타입 -
     
     

 

자료형의 크기를 확인하려면 아래의 코드를 활용하면 됩니다

1
2
print("UInt의 크기 = \(UInt.min) ~ \(UInt.max)")
//약 0 ~ 1844경
 
cs

 

 

 

타입추론(type inference)

 

Swift언어에서는 변수의 타입을 명시하지 않아도 컴파일러가 변수의 타입을 추론할 수 있습니다

1
2
3
4
var num1:Int = 1
var num2 = 2
print(type(of:num1))//Int
print(type(of:num2))//Int
cs

 

 

다만 주의할 점이 있는데 Float형, Character형을 명시하지 않으면 자동으로 Double형, String형으로 변하게 됩니다

1
2
3
4
var myNum1 = 1.1
var myNum2 = "A"
print(type(of:myNum1))//Double
print(type(of:myNum2))//String
cs

 

 

728x90
반응형

댓글