四則演算などの計算を行う演算子を見ていきましょう。
算術演算子
まず、四則演算などを行う算術演算子です。
演算子 | 演算の内容 | 使用例 |
---|---|---|
+ | 足し算 | 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
コメント