Swift教室 Swift と競技プログラミングの教室

複合代入演算子

読了目安 約2分

x += 1 のように計算と代入をまとめて書く。カウンタと累積の定型句を覚える。

この章の目次

total = total + price のような「自分に計算して自分に戻す」式は、この先ずっと出てきます。 Swift には、これを短く書くための演算子があります。

複合代入演算子

計算と代入を 1 つにまとめた演算子を複合代入演算子と呼びます。 x += 1x = x + 1 と同じ意味です。

書き方同じ意味の式
x += ax = x + a
x -= ax = x - a
x *= ax = x * a
x /= ax = x / a
x %= ax = x % a
Swift
var score = 100
score += 50
print(score)
score *= 2
print(score)
score /= 4
print(score)

score が 150、300、75 と変わっていきます。 複合代入は変数の中身を書き換えるので、let の定数には使えません。

カウンタと累積のイディオム

複合代入演算子の出番は、回数を数えるときと、合計を貯めるときです。

Swift
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 += 1x -= 1 を使います。

文字列にも使える +=

+= は数値専用ではありません。 文字列に使うと、末尾への連結になります。

Swift
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 行で出力してください。

  1. A を足す
  2. B を掛ける
  3. C を引く
  4. D で割る
  5. E で割った余りにする

制約: 0 ≤ X, A, C ≤ 100。1 ≤ B, D, E ≤ 100。途中の値が 0 未満になる入力は与えられません。

テキスト
入力例:
10
5 3 20 4 6

出力例:
15
45
25
6
0
模範解答
Swift
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)