1. 할당 연산자
A = B -> A와 B의 데이터 타입이 같을 때, A의 값에 B를 할당한다.
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의 인스턴스를 말한다.
값(value) 타입은 == 연산자를 사용하고, 참조타입은 ===연산자를 사용하는 것이다.
4. 삼항 조건 연산자
조건 ? A : B : 조건이 참이면 A를, 조건이 거짓이면 B를 반환한다.
-피 연산자가 3개인 삼항 조건 연산자를 말한다.
-가독성이 떨어지지만, 코드를 간략하게 할 수 있다.
ex)
let number1 : Int = 3
let number2 : Int = 5
var biggerNumver = number1 > number2 ? number1 : number2 //return 3
조건 : number1 > number2 number1이 number2보다 크면
참일 때는 number1 을 리턴, 거짓일 때는 number2 를 리턴
5. 범위 연산자
1) 폐쇄 범위 연산자
A ... B : A부터 B까지의 수를 묶어서 범위를 표현하는 연산자
2) 반 폐쇄 범위 연산자
A ..< B : A부터 B 미만까지의 수를 묶어서 범위를 표현하는 연산자
3) 단 방향 범위 연산자
A ... : A이상의 수를 묶어 범위를 표현하는 연산자
... A : A이하의 수를 묶어 범위를 표현하는 연산자
..< A : A미만의 수를 묶어 범위를 표현하는 연산자
6. Bool 연산자
1) NOT Bool 연산자
!A : A값의 참, 거짓을 반전시키는 연산자(참일 때 거짓, 거짓일 때 참)
2) AND Bool 연산자
A && B : A 그리고 B의 Bool 논리 연산 실행(A와 B의 조건이 모두 True 일 때.)
3) OR Bool 연산자
A || B : A와 B의 Bool OR 논리 연산을 실행(A와 B의 조건 어느 한 쪽이라도 조건이 true일 때).
7. 비트 연산자
-Bool 연산자와 비트 연산자를 잘 이해하고, 구분하여 사용해야 한다.
1) NOT 비트 연산자
~A : A의 비트를 반전시킨 결과를 반환한다.
2) AND 비트 연산자
A & B : A와 B의 비트 AND 논리 연산 실행
3) OR 비트 연산자
A | B : A와 B의 비트 OR 논리 연산 실행
4) XOR 비트 연산자
A ^ B : A와 B의 비트 XOR 논리 연산을 실행
5) 비트 이동 연산자(시프트 연산자)
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로 나눈 값을 A에 할당한다.
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) 오버플로 곱하기 연산
&* : 오버플로에 대비한 곱셈 연산을 실행.
ex)
var number : UInt8 = 0
let errorResultNumber : UInt8 = number - 1 //에러발생!!
let resultNumber : UInt8 = number &- 1 //정상실행 return 255
UInt8 타입은 8비트 정수 타입으로 부호가 없는 양수만을 표현하기에
0아래로 내려가는 음수가 나오는 계산을 하면 런타임 오류가 발생한다.
이런 상황에서 코드와 같이 오버플로 연산을 사용해주면 오류를 방지할 수 있다.
9. 기타 연산자
-앞서 소개한 연산자 외에 Swift에 기본적으로 정의되어 있는 연산자
1) nil 병합 연산자
A ?? B : A가 nil이 아니면 A를 반환하고, A가 nil일 때, B를 반환하는 연산자
2) 부호 변경 연산자
-A : A(숫자)의 부호를 변경한다.
3) 옵셔널 강제 추출 연산자
A! : A가 옵셔널일 때, 강제로 옵셔널 언래핑해주는 연산자.
4) 옵셔널 연산자
A? : 옵셔널 타입인 A의 값을 안전하게 가져오거나, A가 옵셔널 타입임을 표현해주는 연산자.
Reference :
야곰님의 스위프트 프로그래밍 개정 3판
'Swift' 카테고리의 다른 글
Closer에 관하여2 (0) | 2023.03.02 |
---|---|
Closer에 관하여 (0) | 2023.03.01 |
열거형에 관하여 2 (0) | 2023.02.17 |
열거형에 관하여 (0) | 2023.02.15 |
함수와 메소드의 차이 (0) | 2023.02.06 |