Post

Swift 연산자

Swift 연산자

연산자 분류

단항 연산자피연산자가 한개인 연산자!A
이항 연산자피연산자가 두개인 연산자A + B
삼항 연산자피연산자가 세개인 연산자A ? B : C
전위 연산자연산자가 피연산자 앞에 위치!A
중위 연산자연산자가 피연산자 사이에 위치A * B
후위 연산자연산자가 피연산자 뒤에 위치A!

 

 

연산자의 종류

 

할당 연산자

할당 연산자A = BB값을 A에 할당한다
   

 

산술 연산자

더하기 연산자A + BA와 B를 더하고 값을 반환
빼기 연산자A - BA와 B를 빼고 값을 반환
곱하기 연산자A * BA와 B를 곱하고 값을 반환
나누기 연산자A / BA와 B를 나누고 값을 반환
나머지 연산자A % BA를 B로 나눈 나머지를 반환한다

 

비교 연산자

A == BA와 B가 같은 값인지 비교해 불리언 값 반환
A >= BA가 B보다 크거나 같은지 비교해 불리언 값 반환
A <= BA가 B보다 작거나 같은지 비교해 불리언 값 반환
A > BA가 B보다 큰지 비교해 불리언 값 반환
A < BA가 B보다 작은지 비교해 불리언 값 반환
A != BA와 B가 다른값인지 비교해 불리언 값 반환
A === BA와 B가 참조(래퍼런스) 타입일때 A와 B가 같은 인스턴스를 가르키는지 비교해 불리언 값 반환
A !== BA와 B가 참조(래퍼런스) 타입일때 A와 B가 다른 인스턴스를 가르키는지 비교해 불리언 값 반환
A ~= BA와 B의 패턴이 매치되는지 확인하여 불리언 값 반환
1
2
3
4
5
//같은 참조인지 확인
let A: SomeClass = SomeClass()
let B: SomeClass = SomeClass()

let isSameReference: Bool = A === B  //true

 

삼항 조건 연산자

Question ? A : BQuestion이 참이면 A반환 거짓이면 B반환
  

 

범위 연산자

폐쇄 범위 연산자A…BA부터 B까지 A와 B를 포함한다
반폐쇄 범위 연산자A..<BA부터 B미만 A를 포함하고 B는 포함하지 않는다
단방향 범위 연산자A…A이상의 수를 표현 A를 포함
…AA이하의 수를 표현 A를 포함 
..<AA미만의 수를 표현 A를 포함하지 않음 

 

부울 연산자

불리언 값의 논리 연산시에 사용된다

NOT 연산자!BB의 불리언 값을 반전 시킨다
AND 연산자A && BA와 B의 불리언값을 AND연산한다
OR 연산자A || BA와 B의 불리언값을 OR연산한다

 

비트 연산자

비트로 표현된 값을 계산하는 연산자이다

NOT 연산자~AA비트를 반전한 값
AND 연산자A & BA와 B의 비트를 AND논리 연산
OR 연산자A | BA와 B의 비트를 OR논리 연산
XOR 연산자A ^ BA와 B의 비트를 XOR논리 연산
비트 이동(시프트) 연산자A » NA비트를 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 ?? BA가 nil이 아니면 A를 반환하고 nil이면 B반환
부호 변경 연산자-AA를 부호변경 한다
옵셔널 강제 추출 연산자O!O의 값을 강제 추출한다
옵셔널 연산자V?V를 안전하게 추출하거나 V가 옵셔널임을 표현
This post is licensed under CC BY 4.0 by the author.