Contents

スウィフト – 演算子
演算子は、特定の数学的または論理的操作を実行するようにコンパイラに指示するシンボルです。Objective-Cは組み込み演算子が豊富で、次のタイプの演算子を提供します。
- 算術演算子
- 比較演算子
- 論理演算子
- ビット演算子
- 代入演算子
- レンジ演算子
- その他の演算子
このチュートリアルでは、算術演算、リレーショナル演算、論理演算、ビット演算、代入演算子およびその他の演算子を1つずつ説明します。
算術演算子
次の表は、Swift 4言語でサポートされているすべての算術演算子を示しています。変数Aは10を保持し、変数Bは20を保持した場合は以下のようになります
オペレーター | 説明 | 例 |
---|---|---|
+ | 2つのオペランドを追加する | A + Bは30 |
– | 最初のオペランドから2番目のオペランドを減算する | A – Bは-10 |
* | 両方のオペランドを乗算する | A * Bは200 |
/ | 分子を分母で除算する | B / Aは2 |
% | 整数/浮動小数点除算の後の余り | B%Aは0 |
++ | インクリメント演算子は整数値を1増加させます | A ++は11 |
– | デクリメント演算子は整数値を1減らす | A–は9 |
比較演算子
次の表は、Swift 4言語でサポートされているすべての関係演算子を示しています。変数Aは10を保持し、変数Bは20の場合
オペレーター | 説明 | 例 |
---|---|---|
== | 2つのオペランドの値が等しいかどうかをチェックします。等しい場合、条件は真となります。 | (A == B)は真ではない |
!= | 2つのオペランドの値が等しいかどうかをチェックします。値が等しくない場合、条件は真となります。 | (A!= B)は真である |
> | 左オペランドの値が右オペランドの値より大きいかどうかをチェックします。大きい場合、条件は真となります。 | (A> B)は真ではない。 |
< | 左オペランドの値が右オペランドの値より小さいかどうかをチェックします。大きい場合、条件は真となります。 | (A <B)が成り立つ。 |
> = | 左オペランドの値が右オペランドの値以上かどうかをチェックします。その場合、条件は真となります。 | (A> = B)は真ではない。 |
<= | 左オペランドの値が右オペランドの値以下かどうかをチェックします。その場合、条件は真となります。 | (A <= B)は真です。 |
論理演算子
次の表に、Swift 4言語でサポートされているすべての論理演算子を示します。変数Aは1を保持し、変数Bは0を保持している場合以下のようになります
オペレーター | 説明 | 例 |
---|---|---|
&& | &&は2つのコマンドの間に挟んで利用する。&&の前にあるコマンドを実行して,もし正常に終了した場合(戻り値が0)に,&&の後ろにあるコマンドを実行する。正常に終了しなかった場合は||の後ろのコマンドを実行されない。 | (A && B)は偽 |
|| | 論理OR演算子と呼ばれます。2つのオペランドのいずれかがゼロでない場合、条件は真となります。 | (A || B)は真 |
! | 論理NOT演算子と呼ばれる。オペランドの論理状態を反転するために使用します。条件が真であれば、論理NOT演算子はそれを偽にします。 | !(A && B)は真 |
ビット演算子
ビット単位の演算子はビット単位で処理し、ビット単位で実行します。&、|、^の真理値表は以下の通りです –
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 |
Assume A = 60; and B = 13; これは以下のようになります・ A = 0011 1100 B = 0000 1101 ----------------- A & B = 0000 1100 A|B = 0011 1101 A^B = 0011 0001 ~A = 1100 0011 2進数がわからない方はこちらに飛んでみてください
Swift 4言語でサポートされているビット演算子を次の表に示します。変数Aが60を保持し、変数Bが13を保持し、
オペレーター | 説明 | 例 |
---|---|---|
& | バイナリAND演算子は、両方のオペランドに存在する場合、結果にビットをコピーします。 | (A&B)は12を与え、それは0000 1100です |
| | バイナリOR演算子は、いずれかのオペランドに存在する場合は、ビットをコピーします。 | (A | B)は61を与え、これは0011 1101 |
^ | バイナリXOR演算子は、ビットが1つのオペランドに設定されている場合はコピーしますが、両方を設定することはできません。 | (A ^ B)は49を与え、これは0011 0001 |
〜 | 2進数補数演算子は単項式であり、ビットを反転させる効果があります。 | (〜A)は-61を与え、1100は2の補数形式である。 |
<< | バイナリ左シフト演算子。左オペランドの値は、右オペランドで指定されたビット数だけ左に移動します。 | (A << 2は240を与え、1111 0000 |
>> | バイナリ右シフト演算子。左オペランドの値は、右オペランドで指定されたビット数だけ右に移動します。 | >> 2の場合、15になります。0000 1111 |
代入演算子
SSwift 4は以下の代入演算子をサポートしています –
オペレーター | 説明 | 例 |
---|---|---|
= | 単純な代入演算子、右側のオペランドの値を左側のオペランドに代入する | C = A + BはA + Bの値をCに代入する |
+ = | 加算AND演算子、左オペランドに右オペランドを加算して結果を左オペランドに代入 | C + = AはC = C + Aと等価です。 |
– = | 減算AND代入演算子、左のオペランドから右のオペランドを減算し、その結果を左のオペランドに代入する | C – = AはC = C – Aと等価です |
* = | 乗除算AND演算子、右オペランドに左オペランドを乗算し、その結果を左オペランドに代入します | C * = AはC = C * Aに等しい |
/ = | 除算AND代入演算子、左オペランドと右オペランドを除算し、結果を左オペランドに代入します。 | C / = AはC = C / Aに等しい |
%= | モジュラスAND代入演算子、2つのオペランドを使用してモジュラスをとり、その結果を左のオペランドに代入します | C%= AはC = C%Aに等しい |
<< = | 左シフトAND代入演算子 | C << = 2はC = C << 2と同じである |
>> = | 右シフトAND代入演算子 | C >> = 2はC = C >> 2と同じです。 |
&= | ビット単位のAND代入演算子 | C&= 2はC = C&2と同じです。 |
^ = | ビット単位の排他的論理和と代入演算子 | C ^ = 2はC = C ^ 2と同じです |
| = | ビット単位のORと代入演算子 | C | = 2はC = C |と同じです。2 |
レンジ演算子
Swift 4には、範囲の値を表現するためのショートカットである2つの範囲演算子が含まれています。次の表は、これら2つの演算子を説明しています。
オペレーター | 説明 | 例 |
---|---|---|
クローズドレンジ | (a … b)はaからbまでの範囲を定義し、aとbの値を含みます。 | 1 … 5は1,2,3,4,5を与える |
ハーフオープンレンジ | (a .. <b)は、aからbまでの範囲を定義しますが、bは含みません。 | 1 .. <5は1,2,3および4を与える |
片側範囲 | a …は、aから要素の最後までの範囲を定義します
… aは、startからaまでの範囲を定義します |
1 … 1,2,3 …要素の終わりを与える
… 2は最初から1,2へ |
その他の演算子
Swift 4は、「範囲と?」を含む他のいくつかの重要な演算子をサポートしています。:以下の表で説明します。
オペレーター | 説明 | 例 |
---|---|---|
単項マイナス | 数値の符号は、接頭辞付きの記号を使用して切り替えることができます。 | -3または-4 |
単項プラス | 操作している値をそのまま返します。 | +6は6 |
三元条件付き | 調子 ?X:Y | 条件が真ならば?次に値X:そうでなければ値Y |
演算子の優先順位
演算子の優先順位は、式の用語のグループ化を決定します。これは、式の評価方法に影響します。ある事業者は他の事業者よりも優先度が高い。例えば、乗算演算子は、加算演算子よりも高い優先順位を有する。
例えば、x = 7 + 3 * 2; ここでは、operator *は+よりも優先順位が高いため、xは13であり20ではなく13に割り当てられているため、最初に3 * 2で乗算されてから7に加算されます。
ここでは、優先順位が最も高い演算子が表の上部に表示され、最も低いものが下部に表示されます。式の中で、優先順位の高い演算子が最初に評価されます。
オペレーター | 説明 | 例 |
---|---|---|
一次式演算子 | ()[]。expr ++ expr– | 左から右へ |
単項演算子 | *&+ – !〜++ expr –expr
* /% + – >> << <> <=> = ==!= |
右から左 |
バイナリ演算子 | そして、
^ | && || |
左から右へ |
三項演算子 | ?: | 右から左 |
代入演算子 | = + = – = * = / =%= >> = << =&= ^ = = = | 右から左 |
コンマ | 、 | 左から右へ |