3-4 演算子

四則演算などの計算を行う演算子を見ていきましょう。

算術演算子

まず、四則演算などを行う算術演算子です。

演算子演算の内容使用例
+足し算a = b + c;
-引き算a = b - c;
*掛け算a = b * c;
/割り算a = b / c;
%余りa = b % c;

使ってみましょう。

(ソースコードのファイル名は prg.c)
#include <stdio.h>
/**************************************
算術演算子 サンプル
***************************************/

int main()
{
    int a, b, c;

    //演算して結果を表示
    b = 100;
    c = 25;

    a = b + c;
    printf("a  = %d\n", a);

    a = b - 70;
    printf("a  = %d\n", a);

    a = 4 * c;
    printf("a  = %d\n", a);

    a = b / c;
    printf("a  = %d\n", a);

    a = b % 3;
    printf("a  = %d\n", a);

}
実行します。
cc prg.c -o prg
prg

a  = 125
a  = 30
a  = 100
a  = 4
a  = 1

数学の書き方と変わりないですね。

代入演算子(+=、-= など)

この計算式を見てください。
a = a + 5;
aの値を5増加させます;これは以下のように書けます。
a += 5;
+= は値を増やす演算子です。
代入演算子といいます。

引き算も同様に使えます。
a = a - 5;
これは以下のように書けます。
a -=5;
-= は値を減らす演算子です。

#include <stdio.h>
/**************************************
演算子 サンプル
***************************************/

int main()
{
    int a;

    a = 100;
    a += 5;
    printf("a  = %d\n", a);

    a = 100;
    a -= 5;
    printf("a  = %d\n", a);
}
実行結果はいかのとおりです
a  = 105
a  = 95

説明は加減算だけでしたが、他の演算にも同様に使用できます。
a *= 2;
a /= 2;
a %= 2;

このような使い方です。

インクリメント演算子、デクリメント演算子

この計算式を見てください。
a = a + 1;
aの値を1増加させます;これは以下のように書けます。
a ++;
++ は値を1増やすインクリメント演算子です。
++ が後ろにあるので、後置インクリメント演算子といいます。
これは以下のようにも書けます。
++a;
++ が前にあるので、前置インクリメント演算子といいます。


引き算でも同様に演算できます。
a--;
-- は値を1減らすデクリメント演算子です。
-- が後ろにあるので、後置デクリメント演算子といいます。
--a;
-- が前にあるので、前置デクリメント演算子といいます。

使ってみましょう。

#include <stdio.h>
/**************************************
演算子 サンプル
***************************************/

int main()
{
    int a, b;

    a = 100;
    a++;
    printf("a  = %d\n", a);

    a = 100;
    ++a;
    printf("a  = %d\n", a);

    a = 100;
    a--;
    printf("a  = %d\n", a);

    a = 100;
    --a;
    printf("a  = %d\n", a);
}
実行結果はいかのとおりです
a  = 101
a  = 101
a  = 99
a  = 99

前置きも後置きもどちらも変数の値を1増やしたり、減らしたりすることに変わりはありません。
何が違うのでしょうか。
この後置きの計算式を見てください。
a = 10;
b = a++;
演算結果の b の値は 10 です。9 ではありません。
この式(b = a++)は以下の意味なのです。
b = a;
a = a + 1;
a の値を b に入れた後で、a の値を増やすのです。

次に、この前置きの計算式を見てください。
a = 10;
b = ++a;
演算結果の b の値は 11 です。
この式(b = ++a)は以下の意味なのです。
a = a + 1;
b = a;
a の値を増やした後で。a の値を b に入れるのです。
デクリメント演算子の場合も同様です。
使ってみましょう。

#include <stdio.h>
/**************************************
演算子 サンプル
***************************************/

int main()
{
    int a, b;

    a = 10;
    b = a++;
    printf("b  = %2d  a = %2d \n", b, a);

    a = 10;
    b = ++a;
    printf("b  = %2d  a = %2d \n", b, a);

    a = 10;
    b = a--;
    printf("b  = %2d  a = %2d \n", b, a);

    a = 10;
    b = --a;
    printf("b  = %2d  a = %2d \n", b, a);
}
実行結果はいかのとおりです
b  = 10  a = 11
b  = 11  a = 11
b  = 10  a =  9
b  =  9  a =  9

始めは間違えそうなのですが、慣れると便利な演算子なのです。
私は初心者の頃は、
「使ってからプラス」、「プラスしてから使う」
という語呂で覚えていました。

条件演算子(3項演算子)

三項演算子とは、演算に三つの項目を用いる演算子です。
条件判定に使われるので条件演算子とも呼ばれます。

このように記述します。
式1 ? 式2 : 式3
意味は以下となります。

式1が真であれば → 式2を返す
式1が偽であれば → 式3を返す
ここで真とは1のことで、偽は0のことです。

例で挙げた方が分かりやすいと思います。
2つの値の最大値を求める場合に以下のようになります。

a = 100;
b = 200;

max = a > b ? a : b;
大きい方の値を返す式ですね。

#include <stdio.h>

int main()
{
    int a, b, max;

    a = 100;
    b = 200;
    max = a > b ? a : b;
    printf("max = %d\n", max);

    return;
}
実行結果はいかのとおりです
max = 200

コメント

タイトルとURLをコピーしました