ここでは算術演算をおこなってみましょう。
算術演算とは足し算・引き算・掛け算・割り算と余り演算のことです。
動かしてみよう
ではサンプルコードを動かしてみましょう。
下の実行ボタンをぽちっとクリックしてください。
実行できましたか。
では、出力結果を丁寧に確認してみてください。
ムムッ、だいたい正解がでているようですが、よくよく見てみると割り算の結果が間違ってますね。
解説
C言語では下記の文字で、変数や定数の四則演算と剰余演算をさせることができます。
演算内容 | C言語での記号 |
---|---|
足し算 | + |
引き算 | – |
掛け算 | * |
割り算 | / |
剰余(整数型のみ) | % |
[補足]
算数と同様、演算の実行順序には決まりがあり、×÷%が先に計算されます。
また剰余演算は実数型では使用することができません。
(5 % 4 = 1 は演算できますが、5.0 % 4.0 は演算できません。ビルドエラーになります。)
注意点
除算結果の切り捨て
サンプルコードにおける除算では、整数型を整数型で割りました。
その場合の計算結果は、小数点以下を切り捨てるようにC言語の仕様として定められています。
最初のサンプルコードで除算結果が正しくなかったのはそのためです。
しばらくは慣れないかもしれませんが、言語仕様ですので徐々に使い慣れていってください。
また、切り捨てという特性により、それに伴うミスがよく起きます。
次に別のサンプルコードを実行してみましょう。
5÷2×2 の演算結果がおかしいことがわかると思います。
これは下記手順で計算がおこなわれたことによります。
① 5 ÷ 2 = 2 (小数点切り捨て)
② 2 × 2 = 4
このように除算が絡んだ計算では、意図しない結果が得られることがよくあります。
熟練者でもうっかりミスしがちな箇所なので、気をつけてください。
実数型での除算
小数点以下が必要な計算をおこなわせる場合には、実数型(float や double など)の使用を検討しましょう。
実数型では切り捨ては起きません。
状況に応じて使い分けるようになりましょう。
下記に実数型での除算演算のサンプルコードを用意しましたので、実行してみてください。
正しい除算結果が得られていることが実行結果から分かると思います。
0での除算
除算を使う場合、0で割らないように気をつけましょう。
数学的には0の除算は解無しと定義されていたと思います。
誤って0で割ってしまった場合の挙動は実行環境によりますが、実行時エラーとなったり、大きな値となったりなどマチマチです。(試しに先ほどのサンプルコード内の分母を 0 にして実行させてみてください。)
数学的には解が存在しないのが正しいため、それらの出力のどちらも誤りです。
除算演算をおこなう場合には、if文を用いて、0除算とならないような対応をおこなうことが望ましいです。
if( a != 0 ) x = 5 / a;
else printf("0除算のため、5 ÷ a は実行できません。");
まとめ
まとめです。
- C言語では四則演算と剰余演算が使えます。
- 演算子には処理順序があるので注意が必要です。
- 除算結果は切り捨てられます。それに伴うミスが結構多いです。
- 0除算に気をつけましょう。
以上です。
ではまた。