C言語入門:演算子

C言語では、計算を行う内容を示す記号を演算子と呼びます。 ここでは、C言語で使われる足し算や引き算などの基本的な演算子を説明したいと思います。 ここでは、サンプルコードの結果は書いていません。 実際に手元にサンプルコードをコピー ⇒ コンパイル ⇒ 実行してみてください。

基本的な演算子

C言語で使われる基本的な演算子には以下のものがあります。

足し算 +
引き算 -
掛け算 *
割り算 /
剰余算(割り算を行った余り) %

それぞれを利用した例を以下に示します。


#include <stdio.h>

int
main()
{
 int i;

 i = 1 + 1;
 printf("%d\n", i);

 i = 2 - 1;
 printf("%d\n", i);

 i = 2 * 2;
 printf("%d\n", i);

 i = 6 / 2;
 printf("%d\n", i);

 i = 5 % 2;
 printf("%d\n", i); 
}

上記例は定数同士の計算を行っていますが、変数と定数、変数同士の計算も行えます。


#include <stdio.h>

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

 a = 2;
 b = a * 3;

 printf("%d\n", b);

 c = b + a;

 printf("%d\n", c);
}

また、変数に入っている値を基にして計算も行えます。


#include <stdio.h>

int
main()
{
 int a, b;

 a = 2;
 a = a + 3;

 printf("%d\n", a);

 b = 3;
 b = b + 1;

 printf("%d\n", b);
}

C言語には、式を省略した書き方もあります。 例えば、上記例の「a = a + 3;」は「a += 3;」と書いても同様の結果を得られます。 「a -= 3;」とすると足し算ではなく、aに入っている値を基にした引き算を行います。 「a *= 3;」とするとaに入っている値を基にした掛け算を行い、「a /= 3;」とするとaに入っている値を基にした割り算を行います。 値を1つだけ足したり引いたりする計算には専用の演算子があります。 「a++;」とするとaに入っている値に1を足し、「a--;」とするとaに入っている値から1を引きます。

それぞれを以下の表に示します。

+= 左の項の数値と足し算
-= 左の項の数値から引き算
*= 左の項の数値と掛け算
/= 左の項の数値から割り算
++ 1足す
-- 1引く

#include <stdio.h>

int
main()
{
 int i;

 i = 1;
 i++;
 printf("%d\n", i);

 i--;
 printf("%d\n", i);

 i += 6;
 printf("%d\n", i);

 i -= 2;
 printf("%d\n", i);

 i *= 5;
 printf("%d\n", i);

 i /= 10;
 printf("%d\n", i);
}

C言語には、割り算をしたときの余りを出す「%」演算子もあります。 初めてプログラミングを行う方にとっては%演算子は不思議な物に見えるかも知れませんが、この演算子は非常に便利なので覚えておいて下さい。

%演算子にも変数に含まれている値を基にした演算子があります。 「%=」演算子を使うと、左側に含まれる変数を基にした余り計算を行います。 %演算子を使った例を以下に示します。


#include <stdio.h>

int
main()
{
 int i;

 i = 10 % 3;
 printf("%d\n", i);

 i = 10 % 5;
 printf("%d\n", i);

 i = 100;
 i %= 90;
 printf("%d\n", i);
}

計算を行う時には、項の優先順位を指定したくなることがあると思います。 C言語では、「(」と「)」を利用して計算の優先度を指定できます。 以下に「(」と「)」を利用した例を示します。


#include <stdio.h>

int
main()
{
 int i;

 i = 5 + 5 / 1 + 1;
 printf("%d\n", i);

 i = (5 + 5) / (1 + 1);
 printf("%d\n", i);
}

最後に

ここでは、基本的な演算子の説明をしました。 あまり基本的な計算方法だけ説明してもつまらなくなってしまうと思うので、次は条件分岐をさせるためのif文やelse文の説明をしたいと思います。


次:if、else、else if

- C言語入門 記事一覧

おまけ

IPv6基礎検定

YouTubeチャンネルやってます!