생각, 고민, 문제해결의 기록

[iOS/Swift] 연산자(Operators) 본문

iOS/Swift

[iOS/Swift] 연산자(Operators)

김예티 2022. 10. 24. 10:31
공부한 내용이 수시로 업데이트 됩니다.
피드백은 언제나 환영입니다.

연산자의 종류

Swift에서는 통상적으로 이용하는 산술연산자&&, || 같은 논리 연산자,

그리고 C에서 지원하지 않는 a..<ba…b같이 값의 범위를 지정할 수 있는 범위 연산자를 지원한다.


연산자에는 단항(unary), 이항(binary) 그리고 삼항(ternary) 연산자가 있다.

단항연산자 -a, !b, c!와 같이 하나의 대상 앞뒤에 바로 붙여 사용하는 연산자이다.
이항연산자 2 + 3 같이 두 대상 사이에 위치하는 연산자
삼항연산자 a ? b : c 형태로 Swift에 삼항 연산자는
이 연산자 단 하나만 존재한다.
 

할당 연산자 (Assignment Operator)

할당 연산자는 값을 초기화 시키거나 변경할 때 사용한다. 아래와 같이 상수, 변수 모두에 사용 가능하다.

let b = 10
var a = 5
a = b
// a 값은 10

튜플을 사용해서 한번에 할당할 수도 있다.

let (x, y) = (1, 2)
// x의 값은 1, y의 값은 2

C나 Objective-C와는 다르게 Swift는 할당연산자가 값을 반환하지 않는다.

if x = y {
    //  x= y 는 값을 반환하지 틀린 문법이다.
}

산술 연산자 (Arithmetic Operators)

Swift는 모든 숫자형에서 사용 가능한 덧셈( + ), 뺄셈( - ), 곱셈( * ), 나눗셈( / ), 나머지( % ) 5가지의 산술 연산자를 지원한다.

덧셈 연산자는 아래와 같이 문자열을 합칠때도 사용할 수 있다.

1 + 2       // 3
"hello, " + "world"  // equals "hello, world"

5 - 3       // 2

2 * 3       // 6

10.0 / 2.5  // 4.0

9 % 4    // 1
-9 % 4   // -1
Swift의 나머지연산자의 특징

기존의 언어들에서는 나머지 연산자는 정수타입까지만 지원하는 경우가 많았지만
스위프트에서는 부동소수점 타입에서도 나머지연산을 지원한다.

let number: Double = 5.0
var result: Double = number.truncatingRemainder(dividingBy: 1.5)   // 0.5
result = 12.truncatingRemainder(dividingBy: 2.5)   // 2.0

또한, 스위프트는 데이터 타입에 굉장히 엄격하기 때문에 서로 다른 자료형끼리의 연산이 엄격하게 제한된다.
서로 다른 자료형끼리 연산을 실행하려면 값을 해당 타입으로 변환한 후 연산해야 한다.

단항 음수 연산자 (Unary Minus Operator),  단항 양수 연산자 (Unary Plus Operator)

숫자 값에 - 부호를 붙여서 값을 변경할 수 있지만, + 부호를 통해서는 값을 변경할 수 없다.

let three = 3
let minusThree = -three       // minusThree는 -3
let plusThree = -minusThree   // plusThree는 3, 혹은 "minus minus 3"

let minusSix = -6
let alsoMinusSix = +minusSix  // alsoMinusSix는 -6, 값이 바뀌지 않았다.

합성 할당 연산자 (Compound Assignment Operators)

a = a + 2와 같이 할당연산(=)과 덧셈연산(+)으로 구성된 연산을 합성해 +=형태로 축약해 사용 가능하다.

var a = 1
a += 2
// a는 3

 

'iOS > Swift' 카테고리의 다른 글

[iOS/Swift] 컬렉션 타입(Collection Type)  (0) 2022.10.20
[iOS/Swift] 클로저(Closures)  (0) 2022.10.11
[iOS/Swift] 구조체(Struct)와 클래스(Class)  (0) 2022.08.14