연산자 - 연산자의 종류

hoBahk·2021년 6월 24일
0

1. 연산자의 종류

1) 할당 연산자

  • A=B: A에 B값을 할당

2) 산술 연산자

  • A + B: A 더하기 B
  • A - B: A 빼기 B
  • A * B: A 곱하기 B
  • A / B: A 나누기 B의 몫
  • A % B: A 나누기 B의 나머지

3) 비교 연산자

  • 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의 패턴이 매치되는지 확인

ex) 참조 비교 연산자

let valueA: Int = 3
let valueB: Int = 5
let valueC: Int = 5

let isSampleValueAB: Bool = valueA == valueB // false
let isSampleValueBC: Bool = valueB == valueC // true

class SomeClass{}

let referenceA: SomeClass = SomeClass()
let referenceB: SomeClass = SomeClass()
let referenceC: SomeClass = referenceA

let isSampleReferenceAB: Bool = referenceA === referenceB // false
let isSampleReferenceAC: Bool = referenceA === referenceC // true
let isSampleReferenceBC: Bool = referenceB === referenceC // false

4) 삼항 조건 연산자

  • Question ? A:B : Question 값이 참이면 A, 거짓이면 B를 반환

ex) 삼항 조건 연산자

var valueA: Int = 3
var valueB: Int = 5
var biggerValue: Int = valueA > valueB ? valueA : valueB // 5

valueA = 0
valueB = -3
biggerValue = valueA > valueB ? valueA : valueB // -3

var stringA: String = ""
var stringB: String = " String"
var resultValue: Double = stringA.isEmpty ? 1.0 : 0.0 //1.0
resultValue = stringB.isEmpty ? 1.0 : 0.0 // 0.0

5) 범위 연산자

  • A...B : A부터 B까지의 수를 묶어 범위를 표현(A, B포함)
  • A ..< B : A부터 B미만까지의 수를 묶어 범위를 표현(A 포함, b 미포함)
  • A... : A이상의 수를 묶어 범위를 표현 (A포함)
  • ...A : A이하의 수를 묶어 범위를 표현 (A포함)
  • ..<A : A미만의 수를 묶어 범위를 표현 (A미포함)

6) 부울 연산자

  • !B : B의 참, 거짓 값을 반전
  • A && B : A와 B의 불리언 AND 연산
  • A !! B : A와 B의 불리언 OR 연산

7) 비트 연산자

  • ~A : A의 비트를 반전한 결과를 반환
  • A & B : A와 B의 비트 AND 논리 연산
  • A ! B : A와 B의 비트 OR 논리 연산
  • A ^ B : A와 B의 비트 XOR 논리 연산
  • A >> B, A << B : A의 비트를 B만큼 시프트

8) 복합 할당 연산자

  • A += B : A = A + B
  • A -= B : A = A - B
  • A = B : A = A B
  • A /= B : A = A / B
  • A %= B : A = A % B
  • A <<= N : A = A << N
  • A >>= N : A = A >> N
  • A &= B : A = A & B
  • A != B : A = A != B
  • A ^= B : A = A ^ B

9) 오버플로 연산자

  • &+ : 오버플로에 대비한 덧셈 연산
  • &- : 오버플로에 대비한 뺄셈 연산
  • &* : 오버플로에 대비한 곱셈 연산

ex) 오버플로 연산자

var unsignedInteger: UInt8 = 0
//let errorUnderflowResult: UInt8 = unsignedInteger - 1 //error
let underflowValue: UInt8 = unsignedInteger &- 1 // 255

unsignedInteger = UInt8.max
let errorOverflowResult: UInt8 = unsignedInteger // 255
let overflowValue: UInt8 = unsignedInteger &+ 2 // 1

10) 기타 연산자

  • A ?? B : A가 nil이 아니면 A를 반환 nil이면 B 반환
  • -A : A의 부호 변경
  • O! : O(옵셔녈 개체)의 값을 강제로 추출
  • V? : V(옵셔널 값)를 안전하게 추출하거나, V(데이터 타입)가 옵셔널임을 표현
profile
호박에 줄 그어서 수박 되는 성장 드라마

0개의 댓글