본문 바로가기
Swift

연산자 정리

by iOS 개린이 2023. 2. 28.

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