스위프트 연산자


Swift 연산자

연산자는 컴파일러에게 수학 또는 논리 연산을 수행하도록 지시하는 데 사용되는 기호입니다.

Swift는 다음 연산자를 제공합니다:

  • 산술 연산자

  • 비교 연산자

  • 논리 연산자

  • 비트 연산자

  • 할당 연산자

  • 간격 연산자

  • 기타 연산자

이 장에서는 산술 연산자, 관계 연산자, 논리 연산자, 비트 연산자, 할당 연산자 및 기타 연산자를 자세히 소개합니다.


산술 연산자

다음 표에는 Swift 언어에서 지원되는 산술 연산자가 나열되어 있습니다. 여기서 변수 A는 10이고 변수 B는 20입니다.

더하기 기호A + B 결과는 30A − B 결과는 -10A * B 결과는 200B / A 결과는 2B % A 결과는 0A++ 결과는 11 A--결과는 9Example다음은 산술 연산의 간단한 예입니다.
import Cocoa

var A = 10
var B = 20

print("A + B 结果为:\(A + B)")
print("A - B 结果为:\(A - B)")
print("A * B 结果为:\(A * B)")
print("B / A 结果为:\(B / A)")
A++
print("A++ 后 A 的值为 \(A)")
B--
print("B-- 后 B 的值为 \(B)")
위 프로그램의 실행 결과는 다음과 같습니다.
빼기 기호
*곱셈 기호
입니다. /Divisor
%나머지 구하기
++Increment
--Self-decreasing
A + B 结果为:30
A - B 结果为:-10
A * B 结果为:200
B / A 结果为:2
A++ 后 A 的值为 11
B-- 后 B 的值为 19
비교 연산자다음 표에는 Swift 언어에서 지원하는 비교 연산자가 나열되어 있습니다. 여기서 변수 A는 10이고 변수 B는 20입니다.

Operator

Description

Instance


= =

은(A = = B)와 같습니다. 거짓입니다. (A != B)와 같지 않습니다. (A > B)보다 큼은 거짓입니다. (A < B)보다 작습니다. (A >= B)보다 크거나 같음은 거짓입니다. (A <= B)보다 작거나 같습니다. Example다음은 비교 연산의 간단한 예입니다.
import Cocoa

var A = 10
var B = 20

print("A == B 结果为:\(A == B)")
print("A != B 结果为:\(A != B)")
print("A > B 结果为:\(A > B)")
print("A < B 结果为:\(A < B)")
print("A >= B 结果为:\(A >= B)")
print("A <= B 结果为:\(A <= B)")
위 프로그램의 실행 결과는 다음과 같습니다.
!=
>
<
>=
<=
A == B 结果为:false
A != B 结果为:true
A > B 结果为:false
A < B 结果为:true
A >= B 结果为:false
A <= B 结果为:true
논리 연산자다음 표에는 Swift 언어에서 지원하는 논리 연산자가 나열되어 있습니다. 변수 A가 true이고 변수 B가 false인 경우:

연산자

설명

인스턴스


&&

논리 AND. 연산자의 양쪽이 모두 TRUE인 경우 TRUE입니다. (A && B)는 거짓입니다. (A || B)는 사실입니다. !(A && B)는 사실입니다.
||논리 OR. 연산자의 양쪽 중 적어도 하나가 TRUE이면 TRUE입니다.
!논리적 부정. 부울 값을 부정하면 true가 false가 되고 false가 true가 됩니다.

다음은 논리 연산의 간단한 예입니다.

import Cocoa

var A = true
var B = false

print("A && B 结果为:\(A && B)")
print("A || B 结果为:\(A || B)")
print("!A 结果为:\(!A)")
print("!B 结果为:\(!B)")

위 프로그램의 실행 결과는 다음과 같습니다.

A && B 结果为:false
A || B 结果为:true
!A 结果为:false
!B 结果为:true

비트 연산자

비트 연산자는 이진 비트에 대해 연산을 수행하는 데 사용되며 ~,&,|,^는 부정입니다. 각각 비트 AND 및 비트 AND 또는 비트 AND 및 XOR 연산(다음 표 예 참조):

pqp & qp | qp ^ q
0 0000
01011
1 1 110
10011

A = 60; 및 B = 13;을 지정하는 경우 두 변수에 해당하는 이진수는 다음과 같습니다.

A = 0011 1100

B = 0000 1101

비트 연산 수행:

(A ^ B) 결과는 49이며 이진수는 0011 0001(~A ) 결과는 -61이며, 이는 이진수로 2의 보수 형식으로 1100 0011입니다.아래 그림은 11111111 << 1(11111111이 왼쪽으로 1비트 이동)의 결과를 보여줍니다. 파란색 숫자는 이동된 비트를 나타내고, 회색은 버려진 비트를 나타내며, 빈 비트는 주황색 0으로 채워집니다. A << 2 결과는 240이며 이진수로는 1111 0000아래 사진은 11111111>>1(11111111이 오른쪽으로 한 자리 이동)의 결과를 보여줍니다. 파란색 숫자는 이동된 비트를 나타내고, 회색은 버려진 비트를 나타내며, 빈 비트는 주황색 0으로 채워집니다.
OperatorDescriptionIllustrationExample
& 비트별 AND. 비트 AND 연산자는 두 숫자에 대해 작동하고 두 입력 숫자의 동일한 비트가 1인 경우에만 이 숫자의 각 비트가 1입니다. s1.png(A & B) 결과는 12이며 이진수로는 0000 1100
|비트별 OR입니다. 비트별 OR 연산자 | 두 숫자를 비교한 후 새 숫자를 반환합니다. 이 숫자의 각 비트를 1로 설정하는 조건은 두 입력 숫자의 동일한 비트가 0이 아닌 것입니다(즉, 둘 중 하나가 1이거나 둘 다임). 1 1)입니다. s2.png(A | B) 결과는 61이며, 이는 이진수로 0011 1101입니다. 각 비트가 1로 설정되는 조건은 두 입력 숫자 중 동일한 비트가 다른 경우입니다. 0으로 설정되어 있습니다.
s3.png~비트 부정 연산자~는 피연산자의 각 비트를 부정합니다.
s4.png<< 비트 왼쪽 시프트입니다. 왼쪽 이동 연산자(<<)는 피연산자의 모든 비트를 지정된 비트 수만큼 왼쪽으로 이동합니다.

s5.png>>
비트 오른쪽 이동입니다. 오른쪽 이동 연산자(<<)는 지정된 비트 수만큼 피연산자의 모든 비트를 이동합니다.
s6.pngA >> 2 결과는 15, 바이너리는 0000 1111

다음은 비트 연산의 간단한 예입니다.

import Cocoa

var A = 60  // 二进制为 0011 1100
var B = 13 // 二进制为 0000 1101

print("A&B 结果为:\(A&B)")
print("A|B 结果为:\(A|B)")
print("A^B 结果为:\(A^B)")
print("~A 结果为:\(~A)")

위 프로그램의 실행 결과는

A&B 结果为:12
A|B 结果为:61
A^B 结果为:49
~A 结果为:-61

Assignment Operation

다음 표에는 Swift 언어의 기본 할당 연산이 나와 있습니다.

과 같습니다.
연산자 설명 예제
= 왼쪽 피연산자에 오른쪽 피연산자를 할당하는 간단한 할당 연산입니다. . C = A + B A + B의 연산 결과를 C
+=에 할당한 후 왼쪽과 오른쪽 피연산자를 추가한 후 왼쪽 피연산자에 할당합니다. C += A는 C = C + A
-=대입 전 빼기, 왼쪽 및 오른쪽 피연산자를 뺀 다음 왼쪽 피연산자에 대입하는 것과 같습니다. C -= A는 C = C - A
*=곱하기 전에 왼쪽과 오른쪽 피연산자를 곱한 다음 왼쪽 피연산자에 대입합니다. C *= A는 C = C * A
/=과 동일하며 값을 할당합니다. 왼쪽과 오른쪽 피연산자를 나눈 다음 왼쪽 피연산자에 값을 할당합니다. C /= A는 C = C / A
%=값을 할당하기 전에 나머지를 계산하고 왼쪽 및 오른쪽 피연산자의 나머지를 계산한 다음 값을 왼쪽 피연산자에 할당합니다. C %= A는 C = C % A
<<=비트 단위로 왼쪽으로 이동한 다음 값을 할당합니다.C <<= 2는 C = C < < 2
>>=비트 단위로 오른쪽으로 이동한 다음 값을 할당합니다C >>= 2는 C = C >>2
&=bitwise와 동일합니다. AND 연산 사후 할당C &= 2는 C = C & 2
^=비트 XOR 연산자 뒤에 할당C ^= 2는 C = C ^ 2
| =비트 OR 연산 후 할당C |= 2는 C = C | 2

다음은 할당 연산의 간단한 예입니다.

import Cocoa

var A = 10
var B = 20
var C = 100

C = A + B
print("C 结果为:\(C)")

C += A
print("C 结果为:\(C)")

C -= A
print("C 结果为:\(C)")

C *= A
print("C 结果为:\(C)")

C /= A
print("C 结果为:\(C)")

//以下测试已注释,可去掉注释测试每个实例
/*
C %= A
print("C 结果为:\(C)")


C <<= A
print("C 结果为:\(C)")

C >>= A
print("C 结果为:\(C)")

C &= A
print("C 结果为:\(C)")

C ^= A
print("C 结果为:\(C)")

C |= A
print("C 结果为:\(C)")
*/

위 프로그램의 실행 결과

C 结果为:30
C 结果为:40
C 结果为:30
C 结果为:300
C 结果为:30

간격 연산자

Swift는 두 가지 범위 연산자를 제공합니다.

연산자 설명
닫힌 간격 연산자 닫힌 간격 연산자(a...b)는 a에서 b까지의 모든 값(a 및 b 포함)을 포함하는 값을 정의합니다. 구간에서 b는 a보다 크거나 같아야 합니다. ‌ 닫힌 범위 연산자는 for-in 루프와 같이 범위의 모든 값을 반복할 때 매우 유용합니다. 1...5 범위 값은 1, 2, 3, 4 및 5입니다.
half 개방 간격 연산자 반 개방 간격(a..<b)은 a에서 b까지의 간격을 정의하지만 b는 포함하지 않습니다. 구간에 첫 번째 값은 포함되지만 마지막 값은 포함되지 않기 때문에 반개방 구간이라고 합니다. 1..< 5개의 간격 값은 1, 2, 3, 4

다음은 간격 연산의 간단한 예입니다.

import Cocoa

print("闭区间运算符:")
for index in 1...5 {
    print("\(index) * 5 = \(index * 5)")
}

print("半开区间运算符:")
for index in 1..<5 {
    print("\(index) * 5 = \(index * 5)")
}

위 프로그램의 실행 결과는 다음과 같습니다.

闭区间运算符:
1 * 5 = 5
2 * 5 = 10
3 * 5 = 15
4 * 5 = 20
5 * 5 = 25
半开区间运算符:
1 * 5 = 5
2 * 5 = 10
3 * 5 = 15
4 * 5 = 20

다른 연산자

Swift는 단항, 이진 및 삼항 연산자와 같은 다른 유형의 연산자를 제공합니다.

  • 단항 연산자는 단일 피연산자(예: -a)에서 작동합니다. 단항 연산자는 선행 연산자와 후행 연산자로 구분됩니다. 선행 연산자는 연산 개체(예: !b) 바로 앞에 있어야 하고, 후행 연산자는 연산 바로 뒤에 와야 합니다. 개체(예: !b). -a)。一元运算符分前置运算符和后置运算符,前置运算符需紧跟在操作对象之前(如!b),后置运算符需紧跟在操作对象之后(如i++)。

  • 二元运算符操作两个操作对象(如2 + 3),是中置的,因为它们出现在两个操作对象之间。

  • 三元运算符操作三个操作对象,和 C 语言一样,Swift 只有一个三元运算符,就是三目运算符(a ? b : c

이항 연산자는 두 개의 피연산자(예: 2 + 3)에서 작동하며 두 피연산자 사이에 나타나므로 중앙에 위치합니다. OperatorDescriptionInstance1달러 빼기Add - 숫자 앞의 접두사-3 또는 -41달러 더하기+ 기호 접두사를 추가하세요. 디지털 화폐 +6 결과는 63항 연산자
삼항 연산자는 세 개의 피연산자를 사용합니다. C 언어와 마찬가지로 Swift에는 삼항 연산자(a ? b : c)가 하나만 있습니다.
🎜조건?

다음은 단항, 이진 및 삼항 연산의 간단한 예입니다.

import Cocoa

var A = 1
var B = 2
var C = true
var D = false
print("-A 的值为:\(-A)")
print("A + B 的值为:\(A + B)")
print("三元运算:\(C ? A : B )")
print("三元运算:\(D ? A : B )")

위 프로그램의 실행 결과는 다음과 같습니다.

-A 的值为:-1
A + B 的值为:3
三元运算:1
三元运算:2

연산자 우선순위

표현식에는 서로 다른 연산자를 사용하는 여러 연결된 연산자가 포함될 수 있습니다. 데이터 유형 표현식에는 여러 연산이 있으므로 연산 순서가 다르면 결과가 달라지거나 잘못된 연산 오류가 발생할 수 있습니다. 왜냐하면 표현식에 여러 연산이 포함되어 있으면 연산의 합리성을 보장하기 위해 특정 순서로 결합해야 하기 때문입니다. 결과의 정확성과 고유성.

우선순위는 위에서 아래로 감소하며, 맨 위의 우선순위가 가장 높고, 쉼표 연산자의 우선순위가 가장 낮습니다.

같은 우선순위 내에서는 조합순으로 계산됩니다. 대부분의 연산은 왼쪽에서 오른쪽으로 계산되며, 단항 연산자, 조건부 연산자, 할당 연산자의 세 가지 우선순위 수준만 결합됩니다.

기본 우선순위를 기억해야 합니다.

  • 포인터가 최적이며 단안 작업이 쌍안 작업보다 낫습니다. 플러스 및 마이너스 기호와 같은 것입니다.

  • 먼저 곱셈과 나눗셈(모듈로)을 한 다음 더하고 빼세요.

  • 산술 연산을 먼저 수행한 다음 시프트 연산, 마지막으로 비트 연산을 수행합니다. 특히 주의하세요: 1 << 3 + 2 & 7은 (1 <(3 + 2))&7

  • 논리 연산의 최종 계산

bit 연산 표기법 &3항 연산자할당 연산자comma 다음은 연산자 우선순위의 간단한 예:
연산자 유형 연산자 방향 결합
표현식 연산 () [] . expr++ expr--왼쪽에서 오른쪽으로
단항 연산자

* & + - ! - expr

* / %

+ -

>> <= >=

== !=

오른쪽에서 왼쪽으로

^

|

&&

||

왼쪽에서 오른쪽으로
?:오른쪽에서 왼쪽으로
= + = -= *= /= %= >>= <<= &= ^= |=오른쪽에서 왼쪽으로
,왼쪽에서 오른쪽으로
import Cocoa

var A = 0

A = 2 + 3 * 4 % 5
print("A 的值为:\(A)")

위 프로그램의 실행 결과는 다음과 같습니다.

A 的值为:4

분석 예:

연산자 우선순위에 따라 위 프로그램의 동작은 다음 단계로 분석할 수 있습니다. 표현식은 다음과 같습니다.

2 + ((3 * 4) % 5)

첫 번째 단계는 다음을 계산하는 것입니다. (3 * 4) = 12이므로 식은 다음과 같습니다.

2 + (12 % 5)

두 번째 단계는 12%를 계산하는 것입니다. 5 = 2이므로 식은 다음과 같습니다.

2 + 2

이때 다음과 같이 될 수 있습니다. 계산 결과가 4라는 것을 쉽게 알 수 있습니다.