1. 할당 연산자
A = B -> A와 B의 데이터 유형이 같으면 B에 A의 값이 할당됩니다.
2. 산술 연산자
1) A+B 3) A*B
2) A – B 4) A / B
5) A%B
3. 비교 연산자
1) A == B : A와 B의 값이 같은지 확인하고 bool 타입 반환값을 반환한다.
2) A !
= B : A와 B의 값이 다른지 확인하고 bool 타입을 반환한다.
3) A >= B : A가 B보다 크거나 같은지 확인하고 bool 유형 값을 반환합니다.
4) A <= B : A가 B보다 작거나 같은지 확인하고 bool 유형 값을 반환합니다.
5) A > B : A가 B보다 큰지 확인하고 Bool 타입 값을 반환합니다.
6) A < B : A가 B보다 작은지 확인하고 bool 타입 값을 반환한다.
7) A === B : A와 B가 참조 유형이면 A와 B가 동일한 인스턴스를 가리키는지 확인하고 bool 유형을 반환합니다.
8) A !
== B : A와 B가 참조 유형이면 A와 B가 서로 다른 인스턴스를 가리키는지 확인하고 bool 유형을 반환합니다.
9) A ~= B : A와 B의 패턴이 일치하는지 검사하여 bool 타입 반환값을 반환한다.
7)과 8)의 조건을 만족하는 참조 타입은 Swift의 유일한 참조 타입인 Class의 인스턴스를 가리킨다.
값 유형은 == 연산자를 사용하고 참조 유형은 === 연산자를 사용합니다.
4. 삼항 조건 연산자
상태 ? A : B : 조건이 참이면 A를 반환하고 조건이 거짓이면 B를 반환합니다.
– 세 개의 피연산자가 있는 삼항 조건부 연산자입니다.
– 가독성은 좋지 않지만 코드를 단순화할 수 있습니다.
전)
let number1 : Int = 3
let number2 : Int = 5
var biggerNumver = number1 > number2 ? number1 : number2 //return 3
조건: number1이 number2보다 큰 경우 number1 > number2
참이면 숫자 1, 거짓이면 숫자 2를 반환합니다.
5. 범위 연산자
1) 폐쇄 범위 연산자
A … B : A부터 B까지의 숫자를 그룹화하여 범위를 표현하는 연산자
2) 반폐쇄형 오실로스코프 오퍼레이터
A ..< B : A부터 B보다 작은 수까지 그룹화하여 범위를 표현하는 연산자.
3) 단방향 범위 연산자
A … : A보다 크거나 같은 숫자를 그룹화하여 범위를 표현하는 연산자
… A : A보다 작거나 같은 숫자를 그룹화하여 범위를 표현하는 연산자
..< A : A보다 작은 수를 그룹화하여 범위를 표현하는 연산자.
6. 부울 연산자
1) NOT 부울 연산자
!
A: A의 참/거짓 값을 반전시키는 연산자(참이면 거짓, 거짓이면 참)
2) AND 부울 연산자
A && B : A와 B의 부울 논리 연산을 수행합니다(A와 B의 조건이 모두 참인 경우).
3) OR 부울 연산자
|| B : A와 B의 논리 부울 OR 연산을 수행합니다(A 또는 B 조건 중 하나가 참인 경우).
7. 비트 연산자
– 부울 연산자와 비트 연산자를 이해하고 따로 사용하세요.
1) NOT 비트 연산자
~A : A의 비트를 반전한 결과를 반환합니다.
2) 비트 AND 연산자
A & B: A와 B의 비트 AND를 수행합니다.
3) 비트 OR 연산자
| B: A와 B의 비트 OR 논리 연산 수행
4) 비트별 XOR 연산자
A ^ B : A와 B의 비트 논리 XOR 연산 수행
5) 비트 쉬프트 연산자(shift operator)
A >> B : A의 비트를 B만큼 이동(이동)합니다.
A << B : B의 비트를 A만큼 이동(이동)합니다.
8. 복합 대입 연산자
할당 연산자와 다른 연산자가 한 단계에서 작업을 수행할 수 있는 방식으로 연산자를 결합하는 것으로 구성됩니다.
1) A += B : A와 B의 합을 A에 대입한다.
2) A -= B : A와 B의 차를 A에 대입한다.
3) A *= B : A와 B의 곱이 A에 할당됩니다.
4) A /= B : A에 B로 나눈 값이 할당됩니다.
5) A %= B : A를 B로 나눈 값의 나머지가 A에 할당됩니다.
6) A <<= N : A 를 N 으로 비트 시프트한 값을 A 에 대입한다.
7) A >>= N : A 를 N 오른쪽으로 비트 시프트한 값을 A 에 대입한다.
8) A &= B : A와 B의 비트 AND 연산 결과를 A에 대입한다.
9) A |= B : A와 B의 비트 OR 연산 결과를 A에 대입한다.
10) A ^= B : A와 B의 비트별 XOR 연산 결과를 A에 할당합니다.
9. 오버플로 연산자
-기존 프로그래밍에서는 오버플로나 언더플로의 가능성이 있는 연산에 대해 별도의 알고리즘과 로직을 별도로 설계하는 것이 일반적이었습니다.
그러나 Swift에서는 기본 연산자를 사용하여 오버플로에 대비할 수 있습니다.
이것은 오버플로 연산자입니다.
1) 오버플로우 덧셈 연산
&+ : 오버플로에 대해 더하기 연산을 실행합니다.
2) 오버플로 빼기 연산
&- : 오버플로에 대한 빼기 연산 수행
3) 오버플로 곱셈 연산
&* : 오버플로에 대해 곱셈 연산을 수행합니다.
전)
var number : UInt8 = 0
let errorResultNumber : UInt8 = number - 1 //에러발생!
!
let resultNumber : UInt8 = number &- 1 //정상실행 return 255
UInt8 유형은 부호 없는 양수만 나타내는 8비트 정수 유형입니다.
음수가 0 미만이 되는 계산은 런타임 오류를 일으킵니다.
이런 경우 코드에서와 같이 오버플로 연산을 이용하면 오류를 방지할 수 있습니다.
9. 기타 사업자
– 위에서 소개한 연산자 외에 Swift에서 기본적으로 정의된 연산자
1) 제로 합체 연산자
ㅏ?? B : A가 null이 아니면 A를 반환하고 A가 null이면 B를 반환하는 연산자.
2) 문자 변경 연산자
-A: A(숫자)의 부호를 변경합니다.
3) 선택적 강제 연산자
ㅏ!
: A가 옵셔널인 경우 옵셔널을 강제로 언래핑하는 연산자입니다.
4) 선택적 연산자
ㅏ? : 옵셔널 타입인 A의 값을 안전하게 가져오거나 A가 옵셔널 타입임을 표현하는 연산자.
참조:
Yagom의 Swift 프로그래밍 개정판 3판