03 四則演算よりもさらに発展的な事を学びましょう。

演算子とは

計算をするための記号を演算子といいます。

算術演算子 + - * / % ++ –    
関係演算子 < <= > >= == !=    
論理演算子 &&   !
代入演算子 =    

算術演算子は、四則演算に使ったり、剰余算に使ったりします。

算術演算子のうち、「 ++ 」と 「 – 」はそれぞれインクリメント演算子、デクリメント演算子といい、変数の値を1だけ増加または減少させることができます。

int count = 3;
printf("カウント: %d\n", count);
// 3と表示される

count++;
printf("カウント: %d\n", count);
// 4と表示される

count--;
printf("カウント: %d\n", count);
// 3と表示される

関係演算子や論理演算子は、比較の時に使います。

変数への代入を行う = も、代入演算子という立派な演算子です。

型と算術演算

型と算術演算について考えましょう。

以下のコードを書いてください。ファイル名は、tri00.cとします。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>

int main(void)
{
        int x;
        int h;
        int area_int;
        float area_float;

        // 底辺xが5
        x = 5;
        // 高さhが3
        h = 3;

        // 三角形の面積を求める その1
        area_float = x * h / 2.0;
        printf("三角形の面積その1: %f\n", area_float);

        // 三角形の面積を求める その2
        area_float = x * h / 2;
        printf("三角形の面積その2: %f\n", area_float);

        // 三角形の面積を求める その3
        area_int = x * h / 2.0;
        printf("三角形の面積その3: %d\n", area_int);

		return 0;
}

出力結果は、以下のようになりました。

$ ./tri00
三角形の面積その1: 7.500000
三角形の面積その2: 7.000000
三角形の面積その3: 7

三角形の面積を求める その1では、2.0で割り、その結果をfloat型変数であるarea_floatに格納しています。
xもhもint型変数なので、int型変数同士のかけ算であるx * hの答えはint型ですが、その後に2.0という実数で割っているので、答えが実数となり、その実数型の答えが同じく実数型(float型)の変数であるarea_floatに格納されています。

三角形の面積を求める その2では、2で割り、その結果をfloat型変数であるarea_floatに格納しています。
計算結果をfloat型変数であるarea_floatに格納するのだから、正しい答えが出るだろう、と思ってしまうかもしれませんが、整数同士の演算の結果は整数になってしまうので、計算結果は整数になり、その計算結果を無理やりfloat型変数に代入しているので、答えは7.000000になってしまいます。

三角形の面積を求める その3では、計算結果は実数値になるのですが、その結果をint型変数であるarea_intに格納してしまっているので、当然出力は7になります。

四則演算をする際は、型にも注意するようにしましょう。

練習問題

  1. 半径6の円の面積を求めましょう。なお、円周率は3.14とし、float型変数piに格納してください。ファイル名はcircle.cとします。