コンピューターが行う計算を''演算''といいます。
演算に用いられる記号を''演算子''といい、いろいろな種類があります。
*代入演算子 [#zf9064ef]
変数のところでも出てきましたが、代入にはイコール ''='' を用います。
変数名 = 式;
左辺は、値が代入される「変数の名前」です。
右辺は、変数の代入のところでは「代入する値」と説明しましたが、正しくは「式」です。
式が計算され、その結果の値が代入されます。
*算術演算子 [#e758e0af]
数値同士の演算(算術演算)を行う演算子を''算術演算子''といいます。
算術演算子には、次のようなものがあります。
|種類|演算子|使用例|意味|h
|加算|+|a + b|aとbの和を求める|
|減算|-|a - b|aとbの差を求める|
|乗算|*|a * b|aとbの積を求める|
|除算|/|a / b|aをbで割ったときの商をを求める|
|剰余算|%|a % b|aをbで割ったときの余りを求める|
たとえば、整数の加算を行うプログラムは、次のようになります。
#geshi(c){{
#include <stdio.h>
int main(void) {
int i = 3, j = 5;
int k = i + j;
printf("%d + %d = %d\n", i, j, k);
return 0;
}
}}
このプログラムを実行すると、次のようになります。
#geshi(sh){{
luna% a.out
3 + 5 = 8
}}
小数の演算も整数と同じようにできますが、剰余算だけは整数でしかできません。
たとえば、次のようなプログラムを考えてみます。
#geshi(c){{
#include <stdio.h>
int main(void) {
double d = 3.0, e = 5.0;
double f = d % e;
printf("%f \% %f = %f\n", d, e, f);
return 0;
}
}}
このプログラムをコンパイルすると、次のようなエラーが出ます。
#geshi(sh){{
luna% gcc mod.c
mod.c: In function 'main':
mod.c:5: error: 二項演算子 % が不適切です
}}
**練習1 [#s1385d6c]
[math]5 - 3[/math]を計算するプログラムを作成し、実行せよ。
**練習2 [#zc44c640]
[math]1.5 \times 3.2[/math]を計算するプログラムを作成し、実行せよ。
*算術演算の結果の型 [#i9224264]
int型の値とint型の値の算術演算を行うとその結果はint型になり、double型の値とdouble型の値の算術演算を行うとその結果はdouble型になります。
int型の値とdouble型の値の算術演算を行うと、int型の値がdouble型の値に暗黙的に変換され、その結果はdouble型になります。
注意が必要なのは、int型の値をint型の値で割ったときです。
たとえば、次のプログラムについて考えてみます。
#geshi(c){{
#include <stdio.h>
int main(void) {
double d = 3 / 2;
printf("d = %f\n", d);
return 0;
}
}}
このプログラムを実行すると、次のようになります。
#geshi(sh){{
luna% a.out
d = 1.000000
}}
普通に考えると[math]3 \div 2 = 1.5[/math]ですが、int型の値とint型の値の算術演算の結果はint型になるので、3 / 2の結果が1になり、これがdouble型に暗黙的に変換されています。
これを避けるためには、いずれかの値(あるいは両方の値)をdouble型にします。
#geshi(c){{
#include <stdio.h>
int main(void) {
double d = 3 / 2.0;
printf("d = %f\n", d);
return 0;
}
}}
*明示的型変換(キャスト) [#o3c3bd5a]
*誤差(おまけ) [#l369e7c2]