티스토리 뷰

*********************************

 Topic. 타입 변환(Type Conversion)

*********************************



let height = Int8(5) // Int -> Int8 타입 변환

let width = 10 // 타입 추론에 의해 10은 Int 타입으로 선언되어 있다.


let area = height * width // let area = Int8 * Int 와 같다.

print(area) // Int8과 Int는 같은 Int 타입이지만 각 타입이 다루는 수의 범위가 달라 에러가 뜹니다.



// 타입 변환 Example. 1

let h = UInt8(25)

let x = 10 * h

// 10이 그냥 리터럴 데이터 값. 타입이 들어가기 전(선언 되지 않은 상태). 

   그래서 10 * (UInt8)25 인데, h가 UInt 타입이기 때문에 컴파일러는 10을 UInt8로 추론하여 연산을 하게 된다.

print(x)



// 타입 변환 Example. 2

let num = 10

let floatNum = Float(num)

type(of: floatNum)



// 타입 변환 Example. 3

let signedInteger2 = Int(floatNum) // Float -> Int 타입 변환

type(of: signedInteger2)



// 타입 변환 Example. 4

let star = String(num) // Int -> String

type(of: star)



// Ref. Int도 float도 다 타입의 세부 내용을 살펴보면 구조체다. 

// Ref. Swift = Type Safety Language.



// magnitude, abs : 절대값 구하기

// 둘 다 절대값을 구하는 것이지만, 전자는 타입이 변할 수 있으며, 후자는 불가능

let integer2 = Int(-15)

let magnitude = integer2.magnitude

let absNum = abs(integer2)


type(of: magnitude)

type(of: absNum)

// 가능하면은 abs를 사용하면 좋다. 헤더를 보면서 이해해보도록(Command + Control + Shift + 클릭) 하자.



*****************************************************

 생각해보기. 양수를 사용할 때 Int / UInt 중 어느 것이 좋을까?


 사용성

 안전성 : 서로 데이터의 범위가 다르기 때문에 Int

 타입 추론

변환 : numberInt * numberUInt 할때 변환해야 해서 불편


 아무튼 결론은 위의 요소들을 고려했을 때, 그냥 Int를 사용하자.

 *****************************************************




댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함