Swift 연산자
Swift 연산자
연산자 분류
| 단항 연산자 | 피연산자가 한개인 연산자 | !A |
|---|---|---|
| 이항 연산자 | 피연산자가 두개인 연산자 | A + B |
| 삼항 연산자 | 피연산자가 세개인 연산자 | A ? B : C |
| 전위 연산자 | 연산자가 피연산자 앞에 위치 | !A |
| 중위 연산자 | 연산자가 피연산자 사이에 위치 | A * B |
| 후위 연산자 | 연산자가 피연산자 뒤에 위치 | A! |
연산자의 종류
할당 연산자
| 할당 연산자 | A = B | B값을 A에 할당한다 |
|---|---|---|
산술 연산자
| 더하기 연산자 | A + B | A와 B를 더하고 값을 반환 |
|---|---|---|
| 빼기 연산자 | A - B | A와 B를 빼고 값을 반환 |
| 곱하기 연산자 | A * B | A와 B를 곱하고 값을 반환 |
| 나누기 연산자 | A / B | A와 B를 나누고 값을 반환 |
| 나머지 연산자 | A % B | A를 B로 나눈 나머지를 반환한다 |
비교 연산자
| A == B | A와 B가 같은 값인지 비교해 불리언 값 반환 |
|---|---|
| A >= B | A가 B보다 크거나 같은지 비교해 불리언 값 반환 |
| A <= B | A가 B보다 작거나 같은지 비교해 불리언 값 반환 |
| A > B | A가 B보다 큰지 비교해 불리언 값 반환 |
| A < B | A가 B보다 작은지 비교해 불리언 값 반환 |
| A != B | A와 B가 다른값인지 비교해 불리언 값 반환 |
| A === B | A와 B가 참조(래퍼런스) 타입일때 A와 B가 같은 인스턴스를 가르키는지 비교해 불리언 값 반환 |
| A !== B | A와 B가 참조(래퍼런스) 타입일때 A와 B가 다른 인스턴스를 가르키는지 비교해 불리언 값 반환 |
| A ~= B | A와 B의 패턴이 매치되는지 확인하여 불리언 값 반환 |
1
2
3
4
5
//같은 참조인지 확인
let A: SomeClass = SomeClass()
let B: SomeClass = SomeClass()
let isSameReference: Bool = A === B //true
삼항 조건 연산자
| Question ? A : B | Question이 참이면 A반환 거짓이면 B반환 |
|---|---|
범위 연산자
| 폐쇄 범위 연산자 | A…B | A부터 B까지 A와 B를 포함한다 |
|---|---|---|
| 반폐쇄 범위 연산자 | A..<B | A부터 B미만 A를 포함하고 B는 포함하지 않는다 |
| 단방향 범위 연산자 | A… | A이상의 수를 표현 A를 포함 |
| …A | A이하의 수를 표현 A를 포함 | |
| ..<A | A미만의 수를 표현 A를 포함하지 않음 |
부울 연산자
불리언 값의 논리 연산시에 사용된다
| NOT 연산자 | !B | B의 불리언 값을 반전 시킨다 |
|---|---|---|
| AND 연산자 | A && B | A와 B의 불리언값을 AND연산한다 |
| OR 연산자 | A || B | A와 B의 불리언값을 OR연산한다 |
비트 연산자
비트로 표현된 값을 계산하는 연산자이다
| NOT 연산자 | ~A | A비트를 반전한 값 |
|---|---|---|
| AND 연산자 | A & B | A와 B의 비트를 AND논리 연산 |
| OR 연산자 | A | B | A와 B의 비트를 OR논리 연산 |
| XOR 연산자 | A ^ B | A와 B의 비트를 XOR논리 연산 |
| 비트 이동(시프트) 연산자 | A » N | A비트를 N만큼 이동한다 |
XOR연산은 같은 값이 아니면 1 값이 같으면 0을 출력하는 연산이다
시프트 연산자는 화살표 방향으로 이동하고 비트 범위를 벗어난 비트는 버려진다
7(0111(2))를 2 오른쪽으로 2 시프트 연산시 1(0001(2))가 된다
오버플로 연산자
오버플로가 나오면 오류가 출력되지 않고 해당 연산을 하고 값을 반환한다
| 오버플로 더하기 | &+ | 오버플로에 대비한 더하기 연산 |
|---|---|---|
| 오버플로 빼기 | &- | 오버플로에 대비한 빼기 연산 |
| 오버플로 곱하기 | &* | 오버플로에 대비한 곱하기 연산 |
1
2
3
var a : UInt8 = 0 //UInt8은 0 ~ 255까지 표현 가능하다
let overflow = a - 1 // 런타임 오류 UInt8은 -1을 표현하지 못 한다
let overflow1 = a &- 1 // 255
※ 오버플로가 아닌 경우 이 연산자를 사용하면 엉뚱한 값을 구할 수도 있기 때문에 오버플로가 일어날때 사용 해야한다
기타 연산자
| nil 병합 연산자 | A ?? B | A가 nil이 아니면 A를 반환하고 nil이면 B반환 |
|---|---|---|
| 부호 변경 연산자 | -A | A를 부호변경 한다 |
| 옵셔널 강제 추출 연산자 | O! | O의 값을 강제 추출한다 |
| 옵셔널 연산자 | V? | V를 안전하게 추출하거나 V가 옵셔널임을 표현 |
This post is licensed under CC BY 4.0 by the author.