본문 바로가기

SWIFT 공식문서 문법 알아보기/02. Basic Operators

Swift 공식문서 해설 Basic Operators - Assignment Operator, Arithmetic Operators (2-2)

지정 연산자 (Assignment Operator)

지정 연산자는 (a=b) 초기화하거나 a값을 b값으로 변환합니다

 

let b = 10
var a = 5
a = b
// a is now equal to 10

 

만약 지정된 오른쪽이 다수의 값을 가진 튜플이라면 해당 요소는 다수의 상수와 변수로 한 번에 분해될 수 있습니다.

 

let (x, y) = (1, 2)
// x is equal to 1, and y is equal to 2

 

지정 연산자는 C, Objective-C 와는 달리 스위프트에서 지정 연산자는 값을 반환하지 않습니다. 아래와 같은 문장은 유효하지 않습니다.

 

if x = y {
// This is not valid, because x = y does not return a value.
}

 

이러한 기능은 실제로는 등호 연산자(==)를 사용하려고 할 때 지정 연산자(=) 자가 실수로 사용되는 것을 막습니다. if x = y가 유효하지 않게 함으로써 스위프트는 코드에서 위와 같은 종류의 오류를 피하는데 도움을 줍니다.

산술 연산자 (Arithmetic Operators)

스위프트는 모든 숫자 타입에 대해 4가지의 표준 산술 연산자를 지원합니다

 

  • 덧셈 (+)
  • 뺄셈 (-)
  • 곱셈 (*)
  • 나눗셈 (/)
1 + 2 // equals 3
5 - 3 // equals 2
2 * 3 // equals 6
10.0 / 2.5 // equals 4.0

 

C와 Objective-C의 산술 연산자와 달리 스위프트 산술 연산자는 기본적으로 값이 오버플로우 되는 것을 허용하지 않습니다. 스위프트는 a &+ b와 같은 오버플로우 연산자를 사용함으로써 오버플로우를 실행할 수 있습니다.

 

*부연설명

오버플로우란 지정된 비트 수보다 크거나 작은 수가 발생할 때 나타는 상황을 말합니다. 예를 들어 Int8이라는 값을 타입으로 지정했을 때 Int8의 범위는 -128 ~ 127입니다. 이때 128 이상의 값을 설정한다면 오버플로우가 발생하고 -128 보다 낮은 값이 나온다면 언더플로우가 발생합니다. 하지만 오버플로우 연산자를 활용한다면 오버플로를 허용할 수 있습니다.

 

또한 덧셈연산자는 문자열 연결도 지원합니다. 

 

"hello, " + "world" // equals "hello, world"

나머지 연산자 (Remainder Operators)

나머지 연산자는 (a% b) a 안에 들어갈 b의 배수가 얼마인지 계산하고 우리가 나머지라고 잘 알고 있는 값을 받습니다.

NOTE

나머지 연산자(%)는 다른 언어로는 모듈로 연산자라고 알려져 있습니다. 그러나 스위프트에서의 행동은 음수를 의미하기 때문에 엄격히 말하면 모듈로 연산자보다는 나머지 연산자입니다.

 

나머지 연산자가 어떻게 작동하는지 보여줍니다. 9 % 4를 계산하기 위해 첫 번째 9 안에 4가 몇 개 들어갈지 계산합니다. 

9안에 2개의 4가 들어가고 나머지는 1입니다. 스위프트에서는 아래와 같이 쓰입니다.

 

9 % 4 // equals 1

 

a&b의 답을 확인하기 위해 % 연산자는 방정식에 따라 계산하고 나머지를 출력으로 반환합니다. 

 

a = (b x some multiplier) + remainder

 

some multiplier는 a에 들어갈 b의 최대 수입니다

9와 4를 삽입한 방정식은 입니다.

 

9 = (4 x 2) + 1

 

음수에 관한 값도 나머지를 계산할 때 동일한 방법이 적용됩니다.

 

-9 % 4 // equals -1

 

-9와 4를 삽입한 방정식입니다.

 

-9 = (4 x -2) + -1

 

나머지의 값은 -1입니다. b값이 음수 일 때 부호는 무시됩니다. 이 말은 a% b와 a&-b의 값이 같다는 것을 의미합니다. 

단항 마이너스 연산자 (Unary Minus Operator)

단항 마이너스 연산자라고 알려진 - 접두사를 활용하여 숫자 값의 부호를 전환할 수 있습니다

 

let three = 3
let minusThree = -three // minusThree equals -3
let plusThree = -minusThree // plusThree equals 3, or "minus minus three"

 

단항 마이너스 연산자 (-)는 어떤 공백 없이 작동하는 값 바로 앞에 붙입니다. 

단항 플러스 연산자 (Unary Plus Operator)

단항 플러스 연산자는 어떠한 변화 없이 간단하게 작동하는 값을 그대로 반환시킵니다.

 

let minusSix = -6
let alsoMinusSix = +minusSix // alsoMinusSix equals -6

 

비록 단항 플러스 연산자가 실제로 아무것도 하지 않더라도 음수에 단항 마이너스 연산자를 사용할 때 양수에 대해 대칭하는 코드로 사용할 수 있습니다.