複合代入演算子
読了目安 約2分
x += 1 のように計算と代入をまとめて書く。カウンタと累積の定型句を覚える。
この章の目次
total = total + price のような「自分に計算して自分に戻す」式は、この先ずっと出てきます。
Swift には、これを短く書くための演算子があります。
複合代入演算子
計算と代入を 1 つにまとめた演算子を複合代入演算子と呼びます。
x += 1 は x = x + 1 と同じ意味です。
| 書き方 | 同じ意味の式 |
|---|---|
x += a | x = x + a |
x -= a | x = x - a |
x *= a | x = x * a |
x /= a | x = x / a |
x %= a | x = x % a |
var score = 100
score += 50
print(score)
score *= 2
print(score)
score /= 4
print(score)score が 150、300、75 と変わっていきます。
複合代入は変数の中身を書き換えるので、let の定数には使えません。
カウンタと累積のイディオム
複合代入演算子の出番は、回数を数えるときと、合計を貯めるときです。
var count = 0
count += 1
count += 1
print(count)
var sum = 0
sum += 120
sum += 250
sum += 80
print(sum)count += 1 は「1 増やす」、sum += 値 は「合計に足し込む」という定型句です。
次章の while 文と組み合わせると、この 2 行が繰り返し処理の主役になります。
試してみよう: sum += 300 を 1 行足して、合計が 750 になることを確かめてください。
++ と – は無い
C++ など一部の言語には、1 増やす専用の ++ と 1 減らす専用の -- があります。
Swift にはどちらもありません。
x += 1 と x -= 1 を使います。
文字列にも使える +=
+= は数値専用ではありません。
文字列に使うと、末尾への連結になります。
var bar = ""
bar += "#"
bar += "#"
bar += "#"
print(bar)学びどころ
| 概念 | 一言まとめ |
|---|---|
| 複合代入演算子 | += -= *= /= %=。計算して自分に戻す |
count += 1 | カウンタを進める定型句 |
sum += 値 | 合計に足し込む定型句 |
++ | Swift には無い。+= 1 を使う |
演習
1 行目に整数 X が入力されます。 2 行目に整数 A B C D E が空白区切りで入力されます。
X に次の 5 つの操作をこの順で適用し、1 つ適用するたびに、そのときの X の値を 1 行で出力してください。
- A を足す
- B を掛ける
- C を引く
- D で割る
- E で割った余りにする
制約: 0 ≤ X, A, C ≤ 100。1 ≤ B, D, E ≤ 100。途中の値が 0 未満になる入力は与えられません。
入力例:
10
5 3 20 4 6
出力例:
15
45
25
6
0模範解答
var x = Int(readLine()!)!
let parts = readLine()!.split(separator: " ").map { Int($0)! }
x += parts[0]
print(x)
x *= parts[1]
print(x)
x -= parts[2]
print(x)
x /= parts[3]
print(x)
x %= parts[4]
print(x)