3-1 四則計算

この記事は約2分で読めます。

四則演算

コンピューターは日本語で計算機と言われている以上、C言語でももちろん計算ができます。まず、最も基本的な足し算引き算掛け算割り算(商とあまり)の計算方法を扱います。数学の記号と違いC言語での掛け算の記号はアスタリスク*、割り算の記号はスラッシュ/です。またC言語には余りだけを直接求める演算子%があります。

#include <stdio.h>
int main(void){
	int a,b;
	puts("a=?");
	scanf("%d",&a);
	puts("b=?");
	scanf("%d",&b);
	printf("a+b=%d,a-b=%d\na*b=%d,a/b=%d,a%%b=%d\n",a+b,a-b,a*b,a/b,a%b);
	return 0;
}

実行結果

a=?
5
b=?
3
a+b=8,a-b=2
a*b=15,a/b=1,a%b=2

足し算引き算掛け算は想定通りに行われていますが、割り算の商が1になっています。普通に5÷3を計算すると1.666…という小数になりますが変数aとbはintで宣言しているためaとbの演算もまたintになります。そのため5÷3の答えはの小数部は切り捨てられ整数1になります。

演算子%は正の整数同士でしか使えません。

未定義動作

0で割るなどの数学上定義されていない演算を行うと、エラーが発生します。本来はしてはいけない演算ですが、無理やり実行すると筆者の環境では以下のようになりました。

#include <stdio.h>
int main(void){
	int a,b;
	puts("a=?");
	scanf("%d",&a);
	puts("b=?");
	scanf("%d",&b);
	printf("a/b=%d\n",a/b);
	printf("a%%b=%d\n",a%b);
	return 0;
}

実行結果

a=?
0
b=?
0
(実行結果は環境により異なります)

printf関数が実行されませんでした。printf関数を呼び出す前に引数を指定した段階で、0による除算が発生し異常終了したと思われます。

まとめ

演算子+-*/を使用すると、四則演算ができる。演算子%は、割り算を求める。

数学的に認められていない0による除算は、C言語でもしてはいけない。

コメント

タイトルとURLをコピーしました