「足し算や引き算などの計算する方法が知りたい」
「整数と実数で書き方が変わるの?」
そんな疑問を抱いている方に向けてこの記事は書かれています。
大学や本で学んだことをわかりやすくまとめました!
演算について
足し算や掛け算などを行う際に使う記号のことを
演算子
と言います。
それでは、以下のコードをまず実行してみましょう。
(実行のやり方がわからない場合はこちらを参照してください。)
#include<stdio.h>
int main(void)
{
int x,y; /*整数の変数としてxとyを定義*/
printf("整数を入力して下さい:"); /* 質問を画面に印字 */
scanf("%d", &x); /* xを整数として入力 */
printf("整数を入力して下さい:"); /* 質問を画面に印字 */
scanf("%d", &y); /* yを整数として入力 */
printf("%d足す%dは%d,%d引く%dは%dです\n",x,y,x+y,x,y,x-y);
/*変数 x と y に代入し,x と y を足したときの和と引いたときの差をそれぞれ画面に印字 */
printf("%dかける%dは%dです\n",x,y,x*y);
/*変数 x と y に代入し,x と y をかけたときの積を画面に印字 */
printf("%d割る%dの商は%d,%d割る%dの余りは%dです\n",x,y,x/y,x,y,x%y);
/*変数 x と y に代入し,x を y で割ったときの商と余りをそれぞれ画面に印字 */
return 0;
}
こちらは整数値を読み取り、
2つの整数の和、差、積、商、余り
をそれぞれ画面に印字するプログラムです。
表にまとめると、
演算 | 演算子 |
足し算 | + |
引き算 | – |
掛け算 | * |
割り算 | / |
余り | % |
このように演算を行うことができます。
型について
いきなりですが、以下のプログラムを実行してみます。
/*
整数型と浮動小数型の計算を比較した計算結果を画面に印字するプログラム
*/
#include <stdio.h>
int main(void)
{
int i; /* 整数の変数としてiを定義する */
double d; /* 浮動小数の変数としてdを定義する */
i=(683-119)*(8+21)/41;
d=(double)(683-119)*(8+21)/41;
printf("整数型で計算すると(683-119)*(8+21)/41=%d\n",i);
/* 計算結果を画面に印字 */
printf("倍精度浮動小数点型で計算すると(683-119)*(8+21)/41=%f\n",d);
/* 計算結果を画面に印字 */
return 0;
}
これまで計算を行なっていたときには、
「int」という型を宣言して変数を扱っていました。
小数点を使いたい場合はどうすればいいでしょうか。
そこで使うのが「double」型です。
int型 | double型 | |
printf関数のとき | printf(“%d”,a) | printf(“%f”,a) |
scanf関数のとき | scanf(“%d”,&a) | scanf(“%lf”,&a) |
上の表を参考にしながら使いましょう。
「double」型のscanf関数を使う際に「%lf」になることに注意してください。
もし「int」型と「double」型の計算が混ざりあう場合は、
「int」型が「double」型になります。
つまり、浮動小数点定数として計算され結果が出ます。
おまけ
「double」型で「1.0」を表現したものと「0.1」を10回足したものではとても小さいですが、誤差が生じます。
以下のプログラムを実行して確認してください。
/*
0.1を表現する際の誤差を調べるプログラム
*/
#include<stdio.h>
int main(void)
{
double num1,num2; /*浮動小数をnum1とnum2と定義する*/
num1=1.0; /*num1を1とする*/
num2=0.1; /*num2に0.1を足す*/
num2=num2+0.1; /*num2に0.1を足す*/
num2=num2+0.1; /*num2に0.1を足す*/
num2=num2+0.1; /*num2に0.1を足す*/
num2=num2+0.1; /*num2に0.1を足す*/
num2=num2+0.1; /*num2に0.1を足す*/
num2=num2+0.1; /*num2に0.1を足す*/
num2=num2+0.1; /*num2に0.1を足す*/
num2=num2+0.1; /*num2に0.1を足す*/
num2=num2+0.1; /*num2に0.1を足す*/
printf("0.1の誤差は%.23f",num1-num2); /*誤差を表示*/
return 0;
}
まとめ
今回は、演算と型について解説しました。
「int」型と「double」型の使いわけに気をつけましょう。
次回は、条件式について解説をします。
解説したものは、こちらになりますのでぜひご覧ください。