05 算術演算(発展)
03 四則演算よりもさらに発展的な事を学びましょう。
演算子とは
計算をするための記号を演算子といいます。
算術演算子 | + - * / % ++ – | ||
関係演算子 | < <= > >= == != | ||
論理演算子 | && | ! | |
代入演算子 | = |
算術演算子は、四則演算に使ったり、剰余算に使ったりします。
算術演算子のうち、「 ++ 」と 「 – 」はそれぞれインクリメント演算子、デクリメント演算子といい、変数の値を1だけ増加または減少させることができます。
関係演算子や論理演算子は、比較の時に使います。
変数への代入を行う = も、代入演算子という立派な演算子です。
型と算術演算
型と算術演算について考えましょう。
以下のコードを書いてください。ファイル名は、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になります。
四則演算をする際は、型にも注意するようにしましょう。
練習問題
- 半径6の円の面積を求めましょう。なお、円周率は3.14とし、float型変数piに格納してください。ファイル名はcircle.cとします。