-
Swift - Operator 기본Programming/Swift 2020. 9. 28. 15:11
오늘은 Operator에 대해서 자세히 공부하기 전에 용어 정리를 하려고 합니다.
이번 포스팅에서는 용어에 대해서 공부하고 다음 포스팅에서 Operator의 종류에 대해 함께 공부해보도록 해요 :)
Operator와 Operand
여기서 Opertor(연산자)는 + 와 - 입니다.
그리고 a, b, d는 Operand(피연산자)라고 합니다.
Unary, Binary, Ternary Operator
Operand의 개수에 따라서 다음과 같이 나눌 수 있습니다.
- Unary Operator
- Binary Operator
- Ternary Operator
Unary Operator
단항 연산자라고 하며 피연산자가 1개인 Operator입니다.
단항 연산자에서 주의할 점은 연산자와 피연산자 사이에 공백이 존재하면 안 됩니다. 반드시 붙여서 사용해야 합니다.
Binary Operator
다항 연산자라고 하며 피연산자가 2개인 Operator입니다.
단항 연산자와 달리 붙여서 사용해도 되고 사이에 공백을 넣어줘도 괜찮습니다.
하지만 가독성을 위해 통일하는 게 좋겠죠??
특수한 상황이 아니라면 띄어서 써주는 게 좋습니다한쪽은 공백을 넣고 한쪽은 붙여서 사용하면 안 됩니다.
Ternary Operator
삼항 연산자라고 합니다. 당연히 이번엔 피연산자가 3개인 Operator입니다.
기본적으로 제공되는 삼항 연산자는 ? : 하나밖에 없습니다.
자세한 건 Ternary Conditional Operator에서 다루겠습니다.
Prefix, Postfix, Infix Operator
연산자의 위치에 따라서 다음과 같이 세 가지로 구분할 수 있습니다.
- Prefix Operator
- Postfix Operator
- Infix Operator
Prefix Operator
연산자가 피연산자 앞에 위치한다면 Prefix Operator입니다.
Postfix Operator
연산자가 피연산자 뒤에 위치한다면 Postfix Operator입니다.
!a 와 a!는 의미가 완전히 다르기 때문에 연산자의 위치도 매우 중요합니다.
Infix Operator
연산자가 피연산자 사이에 위치한다면 Infix Operator입니다.
Precedence, Associativity
우리도 수학을 배울 때 연산기호의 우선순위가 있었죠??
이 계산 결과는 24가 아니라 4입니다.
- 보다 *를 먼저 계산해야 한다는 규칙이 있었습니다. 그리고 다음 계산을 해봅시다.
이 계산은 2에서 3을 뺀 후에 10에 그 수를 빼는 순서가 아니죠.
왼쪽에서부터 오른쪽으로 10 - 2 = 8, 8 - 3 = 5와 같은 순서로 계산을 했습니다.
Swift에서도 마찬가지로 연산자에 우선순위와 결합방향이 존재합니다.
Precedence(우선순위)
우선순위를 결정하는 방법은 두 가지가 존재합니다. 하지만 오늘은 간단한 한 가지 방법만 공부해 보도록 해요!
우리가 수학에서 공부했듯이 ()를 사용하여 우선순위를 결정하면 됩니다.
이렇게 하면 곱셉을 먼저 한 후에 뺄셈을 하게 됩니다. 우선순위를 외우지 말고 내가 원하는 계산의 결과가 나오도록 ()를 이용하여 우선순위를 지정할 수 있습니다.
Associativity(결합 방향)
결합방향도 마찬가지로 이러한 개념이 있다는 정도만 이해하고 특별한 경우가 아니라면 왼쪽에서 오른쪽 방향인 LeftAssociate(왼쪽 결합성)을 가진다고 알아두면 됩니다.
Type의 일치
연산자를 사용할 때는 기본적으로 피연산자들은 Type이 같아야 합니다.
Swift에서는 당연히 Int와 Double을 연산할 수 없습니다.
이러한 경우에는 두 피연산자의 타입을 일치시킨 후에 계산을 해야 합니다.
참고자료
https://docs.swift.org/swift-book/LanguageGuide/BasicOperators.html
728x90'Programming > Swift' 카테고리의 다른 글
Swift - Conditional Statement (if, switch, guard) (0) 2020.09.29 Swift - Operator 종류 (0) 2020.09.28 Swift - Type Safety, Type Alias, Type Conversion, Type Casting (0) 2020.09.20 Swift - Character, String, Bool Data Type (0) 2020.09.19 Swift - Number Data Type (0) 2020.09.19