目標
四則演算子について理解し、C言語で簡単な四則演算ができるようにする。
演算子
演算を行う際に使用する記号を演算子といいます。
主な演算子には次のようなものがあります。
- 足し算 +
- 引き算 -
- 掛け算 *
- 割り算 /
- 剰余 (mod) %
剰余とは、割り算を行った際のあまりのことで、7 % 3 は 1 です。
剰余以外は、記号から意味を推測できると思います。
演算子の優先順位
基本的には数学と同じで、加減より乗除が優先されます。
優先順位を変えるには、括弧を用います。
例
printf("%d\n", 1 + 4 * 5);
21 が出力される。
printf("%d\n", (1 + 4) * 5);
25 が出力される。
整数と実数
整数と実数では同じ計算をしても結果が異なります。
例
int a, b;
a = 5;
b = 2;
printf("%d\n", a / b);
この場合は 2 が出力されます。
2.5 にはなりません。
double a, b;
a = 5;
b = 2;
printf("%f\n", a / b);
この場合は 2.5 が出力されます。
整数同士の計算は結果も整数、実数同士の計算は結果も実数になると覚えてください。
整数と実数が混ざっている場合は、結果は実数になります。
剰余演算は整数同士のみで計算できます。どちらかまたは両方が実数だとエラーになります*1。
int a, b;
double c, d;
a = 5;
b = 2;
c = 3;
d = 2;
printf("%d\n", c % d); // コンパイルエラー
printf("%d\n", c % b); // コンパイルエラー
printf("%d\n", a % c); // コンパイルエラー
printf("%d\n", a % b);
キャスト
一時的に型を変更する方法をキャストといいます。
キャストを利用すると、強制的に別の型に変換されます。
キャストを行うには、キャストしたい値の前に、型を括弧で囲んだものをつけます。
例
printf("%d\n", (int) 3.14);
実数 3.14 を int 型にキャストしています。
上の例では、3 が出力されます。
printf("%f\n", (double) 3 / 2);
上の例では 1.5 が出力されます。
詳細に解説すると、以下のようなことが行われています。
- 3 が double 型にキャストされます
- double 型 / int 型 の計算になります
- double 型 / double 型 の計算に変換されます
- 結果が double 型になります
インクリメントとデクリメント
ある変数の値を 1 増やすことを、インクリメントといいます。
同様に、ある変数の値を 1 減らすことをデクリメントといいます。
例
a (= 0 ) がインクリメントされ、1 が表示されます。
int a;
a = 0;
a++;
printf("%d\n", a);
なお、上の例は以下のコードと同等です*2。
int a;
a = 0;
a = a + 1;
printf("%d\n", a);
デクリメントは、次のように記述します。
int a;
a = 1;
a--;
printf("%d\n", a);
上の例では 0 が表示されます。
四則演算と代入
計算を一気にやるのではなく、代入を挟むことで複雑な計算も簡単に記述できます。
例
double PI = 3.14;
double r = 3;
double h = 10;
double a = r * r * PI;
double b = a * h;
printf("底面積 = %f\n", a);
printf("体積 = %f\n", b);
課題
課題1
適当な数値を用いて、四則演算をしなさい。
課題2
二次方程式 (ax^2 + bx + c = 0) を解の公式を用いて解きなさい。
その際に、double 型の変数 a, b, c を宣言し、利用すること。
ただし、重解の際に解が2つ表示されてもよい。
ヒント1
平方根は次のように計算します。
まず、プログラムの先頭 (#include<stdio.h> の次) に次の文を追加してください。
#include <math.h>
そして、次のように使ってください。
sqrt( 平方根をとりたいもの )
たとえば、変数 a の平方根をとりたい場合は、
sqrt(a)
とします。
また、コンパイルをする場合は gccに -lm オプションを付与してください。
gcc -W -Wall file.c -lm
ヒント2
べき乗 (a^n) は、C言語では ^ を使って計算はできません。