データの演算をしてみよう

こんにちは、めのんです!

次はさまざまな演算について見ていきます。

四則演算

まずは四則演算からです。
四則演算というのは、足し算、引き算、掛け算、割り算の4つの演算のことです。
それに加えて割ったときの余りを求める演算(剰余算)も見ていきます。

それぞれの演算に使う記号(演算子)は次のようになります。

  • 足し算: +
  • 引き算: -
  • 掛け算: *
  • 割り算: /
  • 剰余算: %

足し算や引き算は算数と同じなので問題ないと思います。
掛け算にはアスタリスク「*」を使うので注意してください。
割り算はスラッシュ「/」を使います。分数をイメージするとわかりやすいですね。
剰余算には、ちょっとわかりにくいかもしれませんがパーセント「%」を使います。

では、実際にソースコードを書いて確認してみましょう。

これをコンパイルして実行してみますね。
いつまでも「hello.cpp」という名前なのは違和感があるので、今回からソースファイル名を「myapp.cpp」に変更しました(名前は何でもかまいません)。

はい、2 + 3 = 5、2 – 3 = -1、2 × 3 = 6、10 ÷ 3 = 3余り1なので、これで合っていますね。

ここで、整数どうしの割り算は必ず整数になることを覚えておいてください。
小数点以下の結果も求めたい場合は、次のように浮動小数点数を使います。

実行して試すと……

はい、このように小数点以下も表示されましたね。

浮動小数点型では剰余算はできませんので、もしやろうとするとコンパイルエラーになってしまいます。

変数を使った演算結果を同じ変数に代入する

プログラムを書いていると、よく次のような表現をすることがあります。

上のソースコードの9行目のように、xに入っている値と3を足した結果をまたxに代入するといったものですね。

この表現はよく使うので、もっと簡単に書ける表現が用意されています。
それが13行目で、「+=」を使っています。
これはコメントにも書いたように、x = x + 3と同じ意味になります。

実際に動かして確認してみましょう。

9行目の時点でxは5になります(2 + 3 = 5なので)。
次に、13行目では8になります(5 + 3 = 8なので)。

9行目の時点でxが変わっていることに注意してください。

今回は「+=」だけを紹介しましたが、同じ要領で「-=」、「*=」、「/=」、「%=」を使うこともできます。

インクリメントとデクリメント

x += 1やx -= 1のように1を足したり引いたりということはよくあるので、さらに簡単な書き方が用意されています。
それが「インクリメント」と「デクリメント」です。

「インクリメント」は1を足すという意味で「++」を使います。
「デクリメント」は1を引くという意味で「–」を使います。

インクリメントやデクリメントは変数の前に「++」や「–」を書く場合と、変数のうしろに書く場合で振るまいが違います。
実際に試してみましょう。

これを実行すると……

このようになります。

先ほどのソースコードの9行目の出力は1、11行目の出力も1です。
もともとxは0でしたから、インクリメントで1になったことがわかりますね。

ところが、14行目でもインクリメントしているのに1が出力されています。
14行目に来る段階でxは1になっているのでインクリメントすると2になるはずですよね。
16行目の出力でようやく2になっています。

実は「++」を変数の前に書くと、ただちにインクリメントされた結果を返すのに対して、「++」を変数のうしろに書くとインクリメントはされるんですが以前の値を返します。

プログラミング言語の名前であるC++というのもここから来ていて、もとになったC言語の原形を残しながら機能拡張したという意味が込められているんですね。

文字列の連結

ここまでは数値の演算でしたが、文字列の連結についても見ておきましょう。

文字列の連結には「+」記号を使います。
ただし、これができるのは少なくとも一方が変数の場合だけです。

文字列の値(「文字列リテラル」といいます)どうしを連結したい場合は、「+」を使わずに単に並べれば献血することができます。


いろいろと演算のための記号を見てきましたが、こういったものを使いこなせるようにしていきましょう。