【Swift基礎】様々な演算子を徹底解説

本記事では、Swiftで頻繁に利用する計算式である四則演算子と条件式で利用される比較演算子、その他論理演算子、代入演算子、範囲演算子について実際のコードを用いて解説していきます。

四則演算子

学生時代に数学で習った加算、減算などの基本的な計算式の使用方法について解説していきます。

加算

加算は一般的な足し算です。早速基本的な足し算の方法について見ていきます。

2と3を加算した結果をsumという変数に代入しており、sumの出力結果は5となります。本当に一般的な足し算と一緒ですね。

var sum = 2 + 3
print(sum)

実行結果

5

四則演算子の中で、加算は唯一文字列にも使用することができます。書き方は数値の足し算と同じになります。数値も文字列もそれぞれ日常で使用する計算式のように2つ以上の値を足し合わせることができます。

var message = "Hello" + " Swift"
print(message)

実行結果

Hello Swift

数値は数値同士、文字列は文字列同士で足し合わせることができますが、数値と文字列を加算するなど、違うデータ型の値は加算することができないのでご注意ください。

for文やwhile文などのループの中でよく使用する1ずつ値を加算していきたい場合には便利な使い方も紹介していきます。

形式としては 1 を加算したい数値型データの入った変数の後ろに++と、プラスを2つけるだけです。この処理を行っただけ変数の数値の値が1増えています。実際の処理は、num = num + 1という計算式と同じ処理をしています。

var num = 1
print(num)
num++
print(num)

実行結果

1
2

for文やwhile文などのループ処理についてわからない方は、ぜひこちらの記事をご覧ください。

減算

減算の計算式も普通の減算と同じ形になります。subという変数に5-2の結果である3が代入されています。

減算は加算とは異なり、文字列同士での減算はできません。

var sub = 5 - 2
print(sub)

実行結果

3

減算にも1ずつ減算していく方法があり、こちらもループ処理の中で稀に使用することがあります。

1だけ減算したい変数の後ろに–と、マイナスを2つつけるだけで、=などを使用せずにシンプルに書くことができます。実際にはnum = num -1という計算式と同じ処理をしています。

var num = 5
print(num)
num--
print(num)

実行結果

5
4

乗算

乗算の計算にはアスタリスク(*)を使用します。乗算も数値同士の計算を行う場合にのみ使用できます。

var result = 5 * 2
print(result)

実行結果

10

乗算も加算や減算など、他の四則演算子と一緒に使用することができます。使用する際には、一般的な数学と同様、乗算から優先して計算されるため、優先順位をつける際にはかっこ()などを利用してください。

除算

除算には、スラッシュ(/)を使用します。「分子/分母」という書き方をします。

var result = 8 / 2
print(result)

実行結果

4

除算を行う場合にも、加算や減算より優先して先に計算が行われます。

剰余

剰余は割り算の余りを算出するものになります。計算式には、パーセント(%)を使用します。

以下の例では、5%2の場合には2余り1という計算結果になるため、剰余の結果は1です。

var result = 5 % 2
print(result)

実行結果

1

代入演算子

変数や定数に対して値を代入する際に使用する代入演算子について解説していきます。

代入演算子は、「a 代入演算子 b」といった形で代入演算子を挟んでaとbという値が記述され、左側の値に対して右側の値を代入する。という意味を持っています。

実際の例を用いてそれぞれの代入演算子について見ていきます。

代入

単純に右側の値を左側の変数に代入するための演算子です。これは、四則演算子の説明でもすでに使用ていたもので、代入演算子の代表です。

1という値が入った変数aをbに代入しているため、bの値も1になります。

var a = 1
var b = a
print(b)

//bの値は 1 

加算した結果を代入

二つの値を加算した結果を代入するには、「*=」を使用します。

var a = 2
var b = 3
a += b

//aの値は 5

この例では、aとbを加算した結果をaに代入しているため、以下の式と全く同じ計算内容を短く省略して書いていることになります。

var a = 2
var b = 3
a = a + b
//aの値は 5

減算した結果を代入

二つの値を減算した結果を代入するには、「-=」を使用します。

var a = 10
var b = 6
a -= b

//aの値は 4

減算しない場合は、以下の計算式になります。

var a = 10
var b = 6
a = a - b
//aの値は 4

乗算した結果を代入

二つの値を乗算した結果を代入するには、「*=」を使用します。

var a = 5
var b = 4
a *= b

//aの値は 20

乗算の省略しない計算式は以下になります。

var a = 5
var b = 4
a = a * b
//aの値は 20

除算した結果を代入

二つの値を除算した結果を代入するには、「/=」を使用します。

var a = 6
var b = 3
a /= b

//aの値は 2

除算の省略しない計算式は以下になります。

var a = 6
var b = 3
a = a / b
//aの値は 2

剰余を代入

二つの値の剰余を計算した結果を代入するには、「%=」を使用します。

var a = 8
var b = 3
a %= b

//aの値は 2

剰余の結果を同じようにaに代入する計算式は以下になります。

var a = 8
var b = 3
a = a % b
//aの値は 2

比較演算子

比較演算子は、2つの値を比較するために使用します。比較演算子の結果は、比較の条件を満たしている場合にtrue,満たさない場合にfalseを返します。

この比較演算子は、主にif文やwhile文などの「条件を満たした時に処理を行う」ような構文の中で使用する演算子になります。

ここからはif文を使用して解説していきます。if文を知らない方は、こちらの記事で書いているのでご覧ください。

aとbが等しい

2つの値が等しいことを示す場合にはイコール2つの「==」を使用します。

var a = 1
var b = 1
if(a == b){
    //この中を通る。
}

var c = 2
var d = 3
if(c == d){
    //ここは通らない
}

aとbの例では、お互いの値が同じなので結果はtrueに、cとbの比較ではそれぞれの値が異なるのでfalseを返します。

aとbが等しくない

2つの値が等しくないことを表すには感嘆符とイコールを組み合わせた「!=」を使用します。

var a = 1
var b = 1
if(a != b){
    //この中は通らない。
}

var c = 2
var d = 3
if(c != d){
    //この中は通る。
}

今回は、2つの値が等しくないときにtrueを返すため、先ほどの「==」とは全く逆の結果になります。

aはbより大きい

aがbより大きいことを示す場合には、「>」を使用します。

var a = 1
var b = 1
if(a > b){
    //この中は通らない。
}

var c = 3
var d = 2
if(c > d){
    //この中は通る。
}

例では、cがdよりも大きいためtrueを返しますが、aとbは等しいのでfalseを返します。

aはbより小さい

aがbより小さいことを示す場合には、「<」を使用します。

var a = 2
var b = 3
if(a < b){
    //この中は通る。
}

var c = 3
var d = 2
if(c < d){
    //この中は通らない。
}

例では、aがbより小さい場合にはtrueを返しており、cはdより大きいのでfalseを返却します。2つの値が等しい場合にもfalseを返す点に注意してください。

aはb以上

aがbより大きいことを示す場合には、「>=」を使用します。

var a = 1
var b = 1
if(a >= b){
    //この中も通る。
}

var c = 3
var d = 2
if(c >= d){
    //この中も通る。
}

「>=」は、2つの値が等しいか、あるいはaがb以上である場合にtrueを返却するため、aとbが等しい場合、cがdより大きい場合のどちらにもtrueを返却しています。

aはb以下

aがb以下であることを示す場合には、「<=」を使用します。

var a = 2
var b = 3
if(a <= b){
    //この中は通る。
}

var c = 3
var d = 2
if(c <= d){
    //この中は通らない。
}

2つの値が等しいか、aが b以下である場合にtrueを返却するため、cとdを比較した場合にはfalseを返却します。

範囲演算子

範囲演算子は、一定の範囲を網羅する場合に使用する演算子です。特に使用する2つの範囲演算子についてそれぞれの例を示していきます。

例では、「.contains()」という範囲型データに使用できるメソッドを使用していきます。「.contains(値)」は、指定した値がその範囲型データの中に存在すればtrue存在しなければfalseを返すメソッドです。

0から10まで

a…bという形式を用いて表現します。この表現では、aからbまでの値を含む範囲型データとなります。

var numbers = 0...10
numbers.contains(1)        //true
numbers.contains(10)        //true
numbers.contains(11)        //false

0から9まで

a..<bという形式を用いて表現します。先ほどと違い、この演算子では、bを含まないaからb未満の範囲のデータとなります。

var numbers = 0..<10
numbers.contains(1)        //true
numbers.contains(10)        //false
numbers.contains(9)        //true

論理演算子

論理演算子は、条件分岐や繰り返し処理で重要となってくる演算子で複数の条件式を組み合わせる際に使用します。

注意点として、論理演算子はtrueとfalseからなる真偽値の判定にのみ使用できるという点にご注意ください。以下では比較演算子用いて、論理演算子の使用例を見ていきます。

and演算子

and演算子は「a && b」というアンドを2つ用いて「aかつb」を表現をします。and演算子とも言われ、2つ以上の条件式の間に&&を使用し、aが真かつbが真の場合にのみtrueを返却することを意味しているので&&を挟んだ全ての条件式がtrueである場合にtrueを返却します。条件式の中に1つでもfalseが存在すればfalseを返却します。

var a = 1
var b = 2
var c = 3
var d = 4

if(a < b && c < d){
    // true && trueになる
    //結果はtrue
}

if(a < b && c > d){
    //true && falseになる
    //結果はfalse
}

if(a > b && c > d){
    //false && falseになる
    //結果はfalse
}

or演算子

or演算子は、「a || b」というパイプを2つ用いて「aあるいはb」を表現をします。

or演算子とも呼ばれ、2つ以上の複数の条件式を評価する際に使用します。aあるいはbの場合にtrueを返却するという意味になるので、「||」を挟んだ複数の条件式のうち1つでもtrueであればtrueになります。or演算子では、複数の条件式の全てがfalseの場合にfalseを返却します。

var a = 1
var b = 2
var c = 3
var d = 4

if(a < b || c < d){
    // true || trueになる
    //結果はtrue
}

if(a < b || c > d){
    //true || falseになる
    //結果はtrue
}

if(a > b || c > d){
    //false || falseになる
    //結果はfalse
}

and演算子とor演算子は、それぞれ以下のように覚えておくとわかりやすいかと思います。

  • and演算子は、全ての条件式がtrueの場合にのみtrueを返す
  • or演算子は、全ての条件式がfalseの場合にのみfalseを返す

否定演算子

否定演算子は、「!a」という形で真偽値の前にエクスクラメーションマークを用いて真偽値の逆の値を返却します。

trueに「!」をつけるとfalseになり、falseに「!」をつけるとtrueに変身します。式で表すと「!true == false」,「true == !false」という形になります。

例えば、if文で「~ではない場合」という条件を設定したい場合に使用できます。

var a =5
if(a < 6){    //aは6より小さい場合
    //trueになる。
}

if(!(a < 6)){    //aは6より小くない場合
    //falseになる。
}

最後に

本記事では、Swiftで使用する様々な演算子を紹介してきました。

演算子はif文やswitch文などの条件式、while文やfor文などの繰り返し処理で使用します。これらの式についても簡単に解説していきますので是非ご覧下さい。