728x90
반응형

어떤 프로그래밍 언어를 하더라도 기본적인 데이터 타입이 정해져 있다.
스위프트에서는 어떤 기본적인 데이터 타입을 사용하는지 공부하려고 한다.

[ Swift 기본 데이터 타입 ]

1. Bool

true와 false 의 값만 가질 수 있는 타입

// Bool: true 와 false 값만 갖음
var someBool: Bool = true
print(someBool)

someBool = false
print(someBool)

================== 출력 결과 ==================
true
false

true나 false 대신 0이나 1의 값을 넣게 되면 Int 타입의 값을 할당할 수 없다는 컴파일 에러가 발생하게 된다.

// 컴파일 에러 발생
someBool = 0
print(someBool)

// 컴파일 에러 발생
someBool = 1
print(someBool)

================== 출력 결과 ==================

error: study03.playground:11:12: error: cannot assign value of type 'Int' to type 'Bool'
someBool = 0
           ^

error: study03.playground:15:12: error: cannot assign value of type 'Int' to type 'Bool'
someBool = 1

 

2. Int

정수타입, 64비트 정수형

// Int: 정수, 64비트
var someInt: Int = -100
print(someInt)

================== 출력 결과 ==================
-100

 

3. UInt (Unsigned Integer)

양의 정수 타입, 64비트 정수형

// UInt: 양의 정수 타입, 64비트
var someUInt: UInt = 100
print(someUInt)

================== 출력 결과 ==================
100

당연히 음수를 넣게 되면 컴파일 에러가 발생하게 된다.

someUInt = -100
print(someUInt)


================== 출력 결과 ==================
error: study03.playground:26:12: error: negative integer '-100' overflows when stored into unsigned type 'UInt'
someUInt = -100

 

4. Float

실수 타입, 32비트 부동소수형
소수점이 없는 정수를 넣게 되면 부동소수형으로 바뀌어 결과가 나오게 된다.

// Float: 실수 타입, 부동소수형, 32비트
var someFloat: Float = 3.14
print(someFloat)

someFloat = 3
print(someFloat)


================== 출력 결과 ==================
3.14
3.0

 

5. Double

실수 타입, 64비트 부동소수형
Float 과 마찬가지로 소수점이 없는 정수를 넣게 되면 부동소수형으로 바뀌어 결과가 나오게 된다.

// Double: 부동소수형 타입, 64비트
var someDouble: Double = 3.14
print(someDouble)

someDouble = 3
print(someDouble)


================== 출력 결과 ==================
3.14
3.0

여기서 Float 과 Double 타입이 같은 부동소수형이까 Double에 Float을 넣으면 되지 않을까? 라고 생각할 수 있다.
하지만 타입이 달라 값을 할당할 수 없다는 에러 메시지를 발생하게 된다.

someDouble = someFloat
print(someDouble)

================== 출력 결과 ==================
error: study03.playground:43:14: error: cannot assign value of type 'Float' to type 'Double'
someDouble = someFloat
             ^~~~~~~~~
             Double(  )

 

6. Character

문자 타입, 유니코드 사용, 큰따옴표("") 사용

// Character: 유니코드로 사용할 수 있는 모든 문자를 넣어줄 수 있다.
var someCharacter: Character = "😧"
print(someCharacter)
someCharacter = "가"
print(someCharacter)
someCharacter = "a"
print(someCharacter)


================== 출력 결과 ==================
😧
가
a

문자열을 사용하게 되면 컴파일 에러가 발생한다.

someCharacter = "abc"
print(someCharacter)

================== 출력 결과 ==================
error: study03.playground:54:17: error: cannot assign value of type 'String' to type 'Character'
someCharacter = "abc"
                ^~~~~

 

7. String

문자 타입, 유니코드 사용, 큰따옴표("") 사용
String은 문자열에 '+' 를 사용해서 다른 문자열을 더해서 사용할 수 있다.

// String: 유니코드 사용
var someString: String = "하하하"
someString = someString + "더 웃어요!!"
print(someString)

================== 출력 결과 ==================
하하하더 웃어요!!

다른 타입과 마찬가지로 Character 타입을 String에 넣게 되면 컴파일 에러가 발생한다.

someString = someCharacter
print(someString)

================== 출력 결과 ==================
error: study03.playground:62:14: error: cannot assign value of type 'Character' to type 'String'
someString = someCharacter
             ^~~~~~~~~~~~~

 

그리고 강의 마지막에 어떤 타입인지 생각해보는 문제가 있었는데
타입 없이 상수가 주어진다면 type(of: ) 를 사용해서 어떤 타입인지 알 수 있었다.
나는 당연히 Float 과 Character 타입으로 나올 줄 알았는데 
정수는 Int 타입, 부동소수형은 Double 타입, 문자는 String 타입으로 출력되었다.

let integer = 100
let floatingPoint = 12.34
let apple = "A"

print(type(of: integer))
print(type(of: floatingPoint))
print(type(of: apple))


================== 출력 결과 ==================
Int
Double
String

type(of: ) 를 사용하면 타입이 정해져 있는 경우 해당 타입이 반환되지만
타입이 정해져 있지 않은 경우 동적 타입으로 반환된다고 한다.
정확하게 이해가 되는건 아니지만 좀 더 자세히 공부해야 할 것 같다.

어떤 타입인지 알려주는 is 연산자와 타입을 바꿔주는 as 연산자에 대해서 나중에 따로 공부해서 정리해야 겠다.

- 참고 사이트 - 

www.edwith.org/boostcamp_ios/lecture/11128/

 

[LECTURE] 04. 기본 데이터 타입 : edwith

:: 기본 데이터 타입 ::  1. Swift의 기본 데이터 타입 Bool Int, UInt Float, Double Character, String 2. Bool true와 fa... - 부스트코스

www.edwith.org

developer.apple.com/documentation/swift/2885064-type

 

Apple Developer Documentation

 

developer.apple.com

 

728x90
반응형
복사했습니다!