본문 바로가기
iOS/Swift

[iOS/Swift] 표현식(Expressions)과 연산자(Operators)

by iosdevlime 2022. 11. 2.

Swift에서의 표현식은 크게 4가지로 나뉩니다.

  • 접두사 표현식
  • 중위 표현식
  • 으뜸 표현식
  • 접미사 표현식

표현식은 수행하면 값을 반환하거나 에러가 발생하거나, 혹은 둘다 발생합니다.

 

이번 포스팅에서는 연산자와 함께 활용되는 '중위 표현식'에 대해 살펴보고,

어떠한 연산자들을 활용하여 표현식을 작성하는지 구체적으로 알아보도록 하겠습니다.

 

 

 


 

 

 

연산자 (Operators) 란? 

값의 체크, 변경, 할당, 결합을 위한 기호 또는 구

 

연산자란,

값의체크, 변경, 할당, 결합을 위한 기호 또는 구 입니다.

 

단순한 +, -, % , X 와 같은 산술을 위한 개념이 아닌,

연산자를 활용한 구문표현식이라 합니다.

 

등호(=)인 할당자와 하나 혹은 두개의 연산자로 구성됩니다.

 

 

 

기본할당 연산자

  • 할당 연산자는 등호(=)이며, 표현식의 결과를 변수에 저장하는 역할을 담당합니다.
  • 기본적으로, 할당 연산자는 두개의 피 연산자를 가지게 됩니다.
    •  피 연산자 1     =    피 연산자 2 
      •  왼쪽의 피 연산자(할당 받을 대상) : 값을 할당받는 변수 또는 상수 
      •  오른쪽 피 연산자(할당 할 값)  : 산술식, 논리식을 수행하여 왼쪽 피 연산자에 결과를 반영

 

  • 아래 예시에서 주의해야 할 점은?
    • leftOperand 는 "1 + 2의 결과를 할당받는다" 라고 해석하는 것이 바른 표현입니다.
var leftOperand = 1 + 2 

// 할당 연산자(=)를 기준으로..

// 왼쪽 leftOperand는 할당받을 대상(변수 또는 상수)이며,
// 오른쪽 1 + 2는 1이란 피 연산자, 2란 피 연산자를 + 산술연산자로 실행한 결과이다.

 

 

 

 

산술 연산자

  • 더하기, 빼기, 곱하기, 나누기 등 단순한 산술을 실행하는 연산자를 의미합니다.
    • 이들 연산자는 대부분 두개의 피 연산자를 받는 이항 연산자입니다.
    • 반면에, 양수 ➟ 음수로 만들어주는 단항 음수연산자(마이너스 값)하나의 피 연산자를 가집니다.
더보기
연산자 내용
- 변수 또는 표현식의 값을 음수로 만듦
* 곱셉
/ 나눗셈
+ 덧셈
- 뺄셈
% 나머지값 
ex) 10 % 3의 나머지는? 1 

 

 

 

 

복합 할당 연산자

  • 단순한 할당 연산자(=) 뿐만이 아닌, 산술 혹은 논리 연산자와 결합하기 위한 연산자입니다.
    • 연산을 수행한 결과를 피 연산자 중 하나에 저장(주로 왼쪽에 있는 피연산자) 하기 위해 사용됩니다.
x = x + y

// 위를 해석해보자면,, "x + y 한 값을 x에 할당(저장)한다!"

// 또 다른 표현방식으로는 아래와 같으며, 이는 동일한 기능을 수행한다.
x += y

 

더보기
연산자1 연산자2 내용
x += y x = x + y x와 y를 더한(+) 결과값을 x에 저장한다
x -= y x = x - y x와 y를 뺀 (-) 결과값을 x에 저장한다
x *= y x = x * y x와 y를 곱한(x) 결과값을 x에 저장한다
x /= y x = x / y x와 y를 나눈(/) 결과값을 x에 저장한다
x %= y x = x % y x와 y를 나눈 나머지(%) 결과값을 x에 저장한다

 

 

 

 

 

비교 연산자

  • 연산자 간의 비교 결과가 참인지, 거짓인지 판단 후 결과에 따라 Boolean 값을 반환합니다.
    • 이는 프로그램 흐름제어 로직을 만드는 데 가장 자주, 많이 활용되는 연산 표현식입니다.
    • 비교한 결과값은 Bool 타입 변수에 저장됩니다.
var x: Int = 5
var y: Int = 5

let conditions: Bool = (x == y)
// conditions 상수는 Boolean 타입이며, 오른쪽 (x == y) 비교 연산자의 값을 할당한다!
// 결과는? true!

 

더보기
연산자1 내용
x == y x와 y가 같다면, true를 반환한다!
x > y x가 y보다 크다면, true를 반환한다!
x >= y x가 y보다 크거나 같다면, true를 반환한다!
x < y x가 y보다 작다면, true를 반환한다!
x <= y x가 y보다 작거나 같다면, true를 반환한다!
x != y x가 y와 같지 않다면, true를 반환한다!

 

 

 

 

Boolean 논리 연산자

  • 비교 연산자와 유사하나, 그리고(And) /  혹은(Or)  / 그렇지 않으면(Not) 등 논리적 연산을 실시합니다.
    • 역시나, Boolean 타입을 활용합니다.

 

 

 Not (!) 연산자 

  • 변수명 앞에 느낌표 (!)를 작성하면, true ➟ false, false ➟ true 로 변환합니다. 
    • 즉, 일종의 Toggle() 기능으로 볼 수 있습니다. 
    • 강제 언래핑(Forced Unwrapping) 활용방식과 헷갈릴 수 있으니, 유의하시길 바랍니다. 
var animal: Bool = true 

// human 변수에 animal을 대입하는데.. 앞에 느낌표(!)를 붙여 true값을 false 값으로 변환!
var human = !animal
// human -> false

 

 

 OR (||) 연산자 

  • 두개의 피 연산사 중, 하나라도 조건에 만족하면 true를 반환합니다.
    • 반대로, 어느것도 조건에 만족하지 않는 경우엔 false를 반환합니다.
// 조건은 2개!
// 10이 20보다 작거나, 20이 10보다 작거나
// 전자의 조건 하나라도 true이므로..
if (10 < 20) || (20 < 10) {
    print("Expression is true")
} else {
    print("Expression is false")
}
// 반환값 또한 true !

 

 

 And (&&) 연산자 

  • 두개의 피 연산사 중, 모든 조건에 만족해야 true를 반환합니다.
    • 단 하나라도 조건에 만족하지 않으면 false를 반환합니다.
if (10 < 20) && (20 < 10) {
    print("Expression is true")
} else {
    print("Expression is false")
}

// 위 OR(||) 연산자와는 달리,
// 2개 조건 중, 1개가 맞으니 true를 반환한다!

 

 

 

 

범위 연산자

  • 특정 반복을 실시할 때, 그 정도와 범위를 설정하는 연산자입니다.

 

 닫힌 범위 연산자 (Closed Range Operator) 

  • “나를 포함해 재 포함할때 까지~”
  • 콤마 3개 ( … )를 사용하여 표현합니다.
x ... y
// x로 시작해서 y로 끝나는 숫자의 범위! (x와 y는 범위에서 포함된다)

5 ... 8 
// 5,6,7,8

 

 

 반 개방 범위 연산자(half-open range operator) 

  • 나를 포함해 쟤 직전까지~”
  • 콤마 2개 ( .. )비교 연산자 를 함께 활용하여 표현합니다.
x ..< y
// x로 시작해서 y 직전까지의 범위! (x는 범위에 포함, y는 범위에 포함되지 않음)

5 ..< 8
// 5,6,7

 

 

 

 

삼항 연산자

  • 코드 내 판단과 과정을 압축한 연산 방법입니다.
  • 삼항 연산자 기본형태는 다음과 같습니다.
    • 가장 심플한 방식이므로, 자주 활용되는 연산 표현식 중 하나입니다.
조건문  ?  참(true)인 경우 표현식  :  거짓(false)인 경우의 표현식

 

let c: Int = 10
let d: Int = 20

print("Largest number is \( c > d ? c : d)")

// 뒤 삼항 연산자를 해석해보자면..
// c가 d보다 클 경우, ? 뒤의 표현식인 c를 호출하고, 그렇지 않을 땐 d를 호출해라!

// 삼항 연산결과가 false 이므로.. 
// 호출 : "Largest number is 20"

 

 

 

 

 

댓글