<Swift>式と演算子
今回の記事でわかること
- 式とは何かを理解できる
- Swift で使える演算子を知ることができる
- 演算子を実際に使って試せる
式とは
プログラムにおいて「式」は値や変数、演算子を組み合わせて計算するもののことです
例えば次のようなものはすべて「式」です
3 + 5 // 計算式(値: 8)
a - 2 // 変数を含む式
x > 10 // 比較式(true/false)演算子について
式の中で「計算する記号」のことを演算子(えんざんし)と呼びます
算術演算子
Swift で使える基本的な算術演算子は次の通りです
| 演算子 | 意味 |
|---|---|
| + | 加算 |
| – | 減算 |
| * | 乗算 |
| / | 除算 |
| % | 剰余(余り) |
let a = 10
let b = 3
print(a + b) // 13
print(a - b) // 7
print(a * b) // 30
print(a / b) // 3
print(a % b) // 1
/* 出力結果
13
7
30
3
1
*/比較演算子
値同士を比較して Bool 型(true / false)を返します
| 演算子 | 意味 |
|---|---|
| == | 等しい |
| != | 等しくない |
| > | より大きい |
| < | より小さい |
| >= | 以上 |
| <= | 以下 |
let x = 5
let y = 10
print(x == y) // false
print(x != y) // true
print(x < y) // true
print(x >= y) // false
/* 出力結果
false
true
true
false
*/代入演算子
値を変数に代入するために使います。複合代入演算子もあり、計算と代入をまとめて使えます
var num = 10
num += 5 // num = num + 5
num -= 3 // num = num - 3
num *= 2 // num = num * 2
num /= 4 // num = num / 4
num %= 2 // num = num % 2
print(num)
/* 出力結果
0
*/論理演算子(短絡演算子)
論理式を扱うための演算子です。Swift でも短絡評価が行われます
| 演算子 | 意味 |
|---|---|
| && | 論理積(AND) |
| || | 論理和(OR) |
| ! | 否定(NOT) |
let a = true
let b = false
print(a && b) // false
print(a || b) // true
print(!a) // false
/* 出力結果
false
true
false
*/&& や || は短絡評価を行うので、最初の判定で結果が決まると右辺の評価をしません
インクリメント・デクリメント演算子
多くの言語では ++ や — がありましたが、Swift では廃止されています。その代わりに次のように書きます
var n = 5
n += 1 // n = n + 1
print(n) // 6
n -= 1 // n = n - 1
print(n) // 5ビット演算子
Swift では整数型に対してビット演算が可能です。プログラムを扱う現場で働いていますが、使ったことがないので知識程度
| 演算子 | 意味 |
|---|---|
| & | ビットAND |
| | | ビットOR |
| ^ | ビットXOR |
| ~ | ビットNOT(反転) |
| << | 左シフト |
| >> | 右シフト |
let p: UInt8 = 0b1010 // 10
let q: UInt8 = 0b1100 // 12
print(p & q) // 8 (0b1000)
print(p | q) // 14 (0b1110)
print(p ^ q) // 6 (0b0110)
print(~p) // 245 (0b11110101) ※8ビット反転
print(p << 1) // 20 (0b10100)
print(p >> 1) // 5 (0b0101)
/* 出力結果
8
14
6
245
20
5
*/ビット演算子は普段使われないことの方が多いですが、効率の良い処理やハード制御ではよく出てくるそうです
三項演算子(条件演算子)
条件に応じて値を切り替えるときに便利です
let score = 75
let result = (score >= 60) ? "合格" : "不合格"
print(result)
/* 出力結果
合格
*/条件分岐を使わなくても出力結果の一部に取り入れることもできるため、コードがすっきりとして便利です