5.演算子

5-1. 四則演算・余剰
5-2. 単項演算子
5-3. 自動型変換
5-4. 代入演算子・複合代入演算子
5-5. インクリメント・デクリメント
5-6. キャスト・sizeof
5-7. 関係演算子
5-8. 論理演算子・論理の表現
5-9. 2進法・ビット演算子
5-10. 条件演算子
5-11. 順次演算子
5-12. 優先順位・結合規則

5-1. 四則演算・余剰

演算子とは、+-×÷=などの計算に使われる記号のことです。

今日は手始めとして四則演算子(+-×÷)についてやっていこうと思います。

◇加算

言われるまでもなく足し算です。もちろん記号は+です。

-ところで、C言語ではどこで計算するのでしょう?
実は計算式のあるところすべてにおいて計算しているのです。
だから、

1 + 1

と書けば1+1を計算して2という値(リテラル)としてコンピュータは理解し
ます。

いま上の書いたのは式ですが全体が文(ステートメント)になってないと文法エラーが出るので最低でも、

1 + 1 ;

とする必要があります。

しかし、これでは『意味な~いジャン!』って言われそうですね。
確かに、計算はしますがそれだけで結果を使用せず、また出力も保存もせず破棄するからです。

それではいけないので今日は計算結果を画面に出力するプログラムを書きます。
いままでprintf()でリテラルを表示するとき、

printf(“%d\n”,10);

のようにしていましたね。さっき言った様に式があると自動的に計算してその答えをリテラルとして理解するので、

printf(“%d\n”,1+1);

という書き方が通用します。もちろん画面には2と出力されます。

それでは、次に行きましょう。

◇減算

減算も加算同様説明するまではないのですが『左から右の値を引く』ということです。記号は-です。

printf(“%d\n”,13-3);

はい、画面に10と表示されましたか?

では、次は掛け算

◇乗算

掛け算になってちょっと通常の常識と違うものが入ってきます。
それは、記号が×でなく*であることです。

なぜ? なぜっていわれても半角文字に×が用意されていないから代用して使っているんでしょう。
話によると小文字のxと混同しやすいから外したとか…
なので式は、

2 * 3

という感じになります。では出力させて見ましょう。

printf(“%d\n”,4*6);

24と出力されましたか?

◇除算

最後は割り算です。これも÷という記号はなくて/(スラッシュ)を使います。
なぜ÷がないか?これも聞いたところ%と混同する(本当か?)のだそうです。

それともう一つ気をつけなければならないのは、整数の割り算の商は整数になるということです。

たとえば、10÷4としたとき、両方とも整数なので商は2になります。

10÷4=2…2 (商は2、余り2)

これを余りを出さない割り算にするには強制的に実数にしてあげることです。

10.0÷4.0=2.5

このような感じです。

では最後に上の二つの例を表示させて見ましょう。

#include<stdio.h>
main()
{
    printf("(整数)10÷4=%d…%d\n",10/4,10%4);
    printf("(実数)10÷4=%.1f\n",10.0/4.0);
}

結果:
(整数)10÷4=2…2
(実数)10÷4=2.5

と表示されたと思います。プログラム中の式に出てきた演算子%は余りを算出するものです。

◇余剰

これは整数どうしの割り算の時に使用可能で余りを算出する演算子です。

10 % 3

のように使います。

printf(“%d\n”10%3);

とすれば、画面に1と出力されたと思います。
この余剰演算子は実数に使うとコンパイルエラーになるので気をつけてください。
あと、割り算をするわけなので0で割って余りを…ってのも禁止です。

最後に一言注意! 絶対0で割らないでね。計算できないから…