スウィフト演算子
オペレータは、数学や論理演算を実行するようにコンパイラに伝えるために使用される、シンボルです。
スウィフトは、次の演算子が用意されています。
- 算術演算子
- 比較
- 論理演算子
- ビット演算子
- 代入演算子
- インターバル演算子
- その他の演算子
この章では、我々はあなたに算術演算子、関係演算子、論理演算子、ビット演算子、代入演算子やその他の演算子を説明します。
算術演算子
次の表は、変数B 20 10れるの可変スウィフト言語サポートの算術演算子を、一覧表示されます:
演算子 | 説明 | 例 |
---|---|---|
+ | プラス | A + B 30についての結果 |
- | マイナス | - Bの結果-10 |
* | 乗算記号 | 200用* Bの結果 |
/ | 分裂の兆候 | B / 2の結果 |
% | 残り | B%の結果が0であります |
++ | インクリメント | ++ 11の結果 |
- | デクリメント | A--結果9 |
例
算術演算の簡単な例を示します。
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)")
上記プログラムの実行結果:
A + B 结果为:30 A - B 结果为:-10 A * B 结果为:200 B / A 结果为:2 A++ 后 A 的值为 11 B-- 后 B 的值为 19
比較
ここで、変数10、B 20の変数次の表は、比較演算子スウィフト言語サポートを示しています。
演算子 | 説明 | 例 |
---|---|---|
== | 同じ | (== B)は偽です。 |
!= | 等しくありません | (!= B)が真です。 |
> | 越えます | (A> B)は偽です。 |
< | 以下 | (A <B)が真です。 |
> = | 以上 | (A> = B)が偽です。 |
<= | 以下 | (A <= B)が真です。 |
例
比較演算の簡単な例を示します。
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
論理演算子
以下の表は、変数Bが偽である変数Aが真であるスウィフト言語サポート論理演算子を、一覧表示されます:
演算子 | 説明 | 例 |
---|---|---|
&& | 論理と。 オペレータがTRUEの場合は両側がTRUEでした。 | (&& B)は偽です。 |
|| | またはロジック。 TRUEの少なくとも一方の両側のオペレータがTRUEだった場合。 | (|| B)は真です。 |
! | 論理NOT。 それはとても真が偽となり、偽が真となり、ブール値を反転させます。 | !(&& B)は真です。 |
論理演算の簡単な例を示します。
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
ビット演算子
ビット演算子動作させるために使用されるビット、〜、&、|、^が否定された、およびビット、またはビットによると、次の表の例でビットごとのXOR演算:
P | Q | P&Q | P | Q | P ^ qは |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
A = 60の場合;およびB = 13;バイナリに対応する二つの変数は以下のとおりです。
A = 0011 1100 B = 0000 1101
ビット演算の場合:
演算子 | 説明 | ダイアグラム | 例 |
---|---|---|---|
& | ビット単位と。 2つの数値を操作するためのビット単位のAND演算子で、その後、新しい番号を返し、この番号の各ビットは、2つの入力数字が1つだけの1にされている必要があります。 | (A&B)結果が12で、バイナリは1100 0000です | |
| | ビット単位のか。 ビット単位のOR演算子| 2つの数値を比較し、この数は、2つの入力数値の最初のものと同じ条件がそれは、1のいずれかである(ゼロとは異なる、またはあるあるすべてのセットは、新しい番号を返します。 1)。 | (A | B)の結果はバイナリは00111101です、61です | |
^ | その後、ビット単位のXOR ^ 2つの数値を比較する排他的論理和演算子ビット単位や数を返しますが、この数字は、各ビット条件1にセットされ、ゼロに等しい異なる数の場合と2入力です。 | 00110001 49バイナリの(A ^ B)の結果 | |
〜 | ビット演算子 - 各ビットが反転操作の数のため。 | (〜A)-61の結果、バイナリは、2の補数形式で1100 0011です。 | |
<< | ビット単位の左。 左シフト演算子(<<)は、オペランドの指定されたビットの左のすべてのビット番号に移動します。 | 次の図に示す<< 1 11111111結果(11111111は、1を左)。 ブルー数字はオレンジ色の0で欠員を埋める、ビットグレー破棄ビットを移動させること。 | << 240バイナリのための2の結果は11110000です |
>> | ビット単位の右。 すべての右にビットおよびオペレータ(<<)オペランド指定されたビット数を移動します。 | 次の図は、>> 1 11111111(11111111右1)の結果を示しています。 ブルー数字はオレンジ色の0で欠員を埋める、ビットグレー破棄ビットを移動させること。 | A >> 15 0000 1111バイナリシステムのための2の結果 |
以下は、ビット操作の簡単な例です:
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
代入演算子
次の表は、基本的な代入演算子スウィフト言語を示しています。
演算子 | 説明 | 例 |
---|---|---|
= | 単純な代入演算子は、左オペランドに割り当てられた右オペランドを指定します。 | C = A + B、A + Bの演算結果を、Cに割り当てられます |
+ = | 左オペランドに割り当てを追加する前に、割り当て後にオペランドの左右を追加します。 | C + = Aは、C = C + Aに対応します |
- = | 減算割り当てた後、減算後の左オペランドの両側に左右のオペランドがに譲渡されています。 | C - = AはC = Cに対応 - |
* = | その後、割り当てを乗じ、オペランドの左右両側には、左のオペランドに代入する前に乗算されます。 | 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に相当します |
&= | ビット単位のAND演算後の割り当て | C&= 2はC = C&2と同等です |
^ = | ビット単位の排他的論理和演算子と、割り当てられました | C ^ = 2はC = C ^ 2に相当します |
| = | ビットごとのOR代入した後 | C | 2 | = 2はC = Cに対応します |
代入演算子の簡単な例を示します。
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
インターバル演算子
スウィフトは、2つの距離の演算子を提供しています。
演算子 | 説明 | 例 |
---|---|---|
クローズド間隔演算子 | 定義された間隔は、(aとbを含む)からBへのすべての値を含むクローズド間隔オペレータは、(B ...)、bがより大きいか等しいAでなければなりません。 すべての値の範囲内で閉じた区間の繰り返し演算子がfor-のループのように、非常に便利です。 | 1 ... 5の範囲は1、2、3、4、5 |
半開区間演算子 | 半開区間(.. | 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
その他の演算子
スウィフトは、モノ - 、ジ - 、および三項演算子などの演算子の他の種類を提供しています。
- 単一のオペレーティング・オブジェクト操作上の単項演算子(例えば
-a
)。 単項演算子演算子分前と後オペレータは、オペレータがする必要がプレオペレーティング(のような物体直前!b
すぐに(のようなオブジェクト後の動作のために、リアオペレータ)i++
)。 - バイナリ演算子は、両方のオペレーティングオブジェクトが(のような動作
2 + 3
彼らは二つのオペランドの間に表示されるように)、それは、家です。 - 三三元操作対象を操作するオペレータ、およびC言語は、スウィフトは唯一の三項演算子で、三項演算子である(
a ? b : c
)。
演算子 | 説明 | 例 |
---|---|---|
単項マイナス | プレフィックス - デジタルフロントを追加 | -3または-4 |
単項プラス | デジタルマネーは+プレフィックスを追加します | 6結果6 |
三項演算子 | ?条件X:Y | あなたが追加した場合はそれ以外の場合は、X、Yの値がtrueであります |
以下は、1ドル、バイナリと三項演算子の簡単な例です:
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
演算子の優先順位
式では、データオブジェクトの異なるデータ・タイプとの接続の異なる複数のオペレータを含んでいてもよい;式はさまざまな操作であるため、操作の異なる順序であっても誤動作エラー異なる結果を有することができる場合ためときに、特定の順序に従って、さまざまな操作を含む式は、操作の一意性を結果の合理性と正確性を確保するために組み合わせなければなりません。
優先順位が上から下に降順で、上部が最も高い優先度を持つ、コンマ演算子は、最も低い優先順位を有します。
同じ優先順位レベル、計算の結合順序に従って。 ほとんどの操作は、左から右に計算され、3つだけの優先順位は、彼らは単項演算子、条件演算子、代入演算子は、右から左組み合わせです。
基本的な優先順位は覚えておく必要があります。
- バイナリ演算子より単項最適ポインタ、。 印として。
- 減算後の第1の乗算や除算(モジュラス)。
- 最後のビット・コンピューティングの後の最初の算術シフト演算。 特に注意を払ってください:<< 1 2&3 + 7(1 << + 2(3))&7と同等です
- 最終的な計算論理演算
演算子の種類 | 演算子 | 結合方向 |
---|---|---|
式の評価 | ()[]。Exprに++ 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分の演算結果ことがわかります。