C言語入門 四則演算

Last-modified: 2022-04-18 (月) 19:10:14
 

目標

四則演算子について理解し、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 が出力されます。

詳細に解説すると、以下のようなことが行われています。

  1. 3 が double 型にキャストされます
  2. double 型 / int 型 の計算になります
  3. double 型 / double 型 の計算に変換されます
  4. 結果が 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言語では ^ を使って計算はできません。

 


*1 言語によっては認められています。
*2 機械語レベルいうと厳密には異なります。