授業/C言語基礎/演算
をテンプレートにして作成
開始行:
コンピューターが行う計算を''演算''といいます。
演算に用いられる記号を''演算子''といい、いろいろな種類が...
*代入演算子 [#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型にな...
int型の値とdouble型の値の算術演算を行うと、int型の値がdou...
注意が必要なのは、int型の値をint型の値で割ったときです。
たとえば、次のプログラムについて考えてみます(プログラム1...
#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型の...
これを避けるためには、いずれかの値(あるいは両方の値)をd...
#geshi(c){{
#include <stdio.h>
int main(void) {
double d = 3 / 2.0;
printf("d = %f\n", d);
return 0;
}
}}
#geshi(c){{
#include <stdio.h>
int main(void) {
double d = 3.0 / 2;
printf("d = %f\n", d);
return 0;
}
}}
**練習3 [#u9810330]
プログラム1を作成し、実行結果を確認せよ。
また、作成したプログラムをプログラム2, 3のように変更し、...
*明示的型変換(キャスト) [#o3c3bd5a]
int型の値をint型の値で割ってdouble型の値の結果を得たいと...
キャストは、次のように、変換後の型をカッコ ''( )'' で囲ん...
(型) 変数名
たとえば、int型の値をint型の値で割ってdouble型の結果を得...
#geshi(c){{
#include <stdio.h>
int main(void) {
int i = 3, j = 2;
double d = (double) i / j;
printf("d = %f\n", d);
return 0 ;
}
}}
これを実行すると、割り算が行われる前にキャストによって変...
double型の値とint型の値の計算になるので、int型の値がdoubl...
**練習4 [#t73d1c8b]
プログラム1をプログラム4のように変更し、実行結果を確認せ...
**演習5 [#f4528a06]
int型の変数に5を代入し、複合代入演算子を用いてその変数に4...
*演算子の優先順位 [#jb6c81ee]
演算子に優先順位があります。
数学における計算の優先順位と同じように、算術演算子におい...
優先順位が低い演算を先に行う場合は、次のように、優先する...
#geshi(c){{
#include <stdio.h>
int main(void){
int i = 1 + 2 * 3, j = (1 + 2) * 3;
printf("i = %d, j = %d\n", i, j);
return 0;
}
}}
このプログラムを実行すると、次のようになります。
#geshi(sh)){{
luna% a.out
i = 7, j= 9
}}
これまでに出てきた演算子の優先順位は、次のようになります。
|優先順位|演算子|使用例|意味|h
|2|+|+a|正の数|
|~|−|−a|負の数|
|3|()|(b) a|キャスト|
|4|*|a * b|積|
|~|/|a / b|商|
|~|%|a % b|剰余|
|5|+|a + b|和|
|~|−|a − b|差|
|15|=|a = b|代入|
1から順に並んでいないのは、まだ勉強していない演算子がある...
正の数、負の数を表す演算子は、作用する相手(項)が一つし...
作用する相手が二つの演算子は''二項演算子''といいます。
(まだ出てきていませんが,三項演算子もあります。)
演算子の+と−は,単項演算子としても二項演算子として...
**演習6 [#wc37d442]
プログラム5を作成し、実行結果を確認せよ。
----
*誤差(おまけ) [#l369e7c2]
10進数の[math]0.1[/math]を2進数に直すと、[math]0.00011001...
double型の仮数部は52ビットですから、double型の仮数部に収...
そこで、このようなときには、仮数部に収めることができなか...
(10進数の四捨五入のような感じで、2進数で''最近接偶数丸め...
このため、double型の変数に10進数の[math]0.1[/math]を代入...
次のプログラムは、[math]0.1[/math]をdouble型の変数に代入...
#geshi(c){{
#include <stdio.h>
int main(void) {
double d = 0.1;
printf("d = %.30f\n", d);
return 0;
}
}}
(小数点以下の桁数を指定する方法については、後できちんと...
このプログラムを実行すると、次のようになります。
#geshi(sh){{
luna% ./a.out
d = 0.100000000000000005551115123126
}}
このような丸めによって生じた誤差を''丸め誤差''といいます。
この他にも、コンピューターで計算すると幾つかの種類の誤差...
誤差についての詳しいことは、計算機アーキテクチャーや数値...
**演習7 [#v7fa458e]
プログラム6を作成し、実行結果を確認せよ。
----
*まとめ [#o1a9a495]
コンピューターが行う計算を''演算''といい、演算に用いられ...
''代入演算子''は代入を行う演算子、''算術演算子''は算術演...
int型の値とint型の値を演算した結果はint型に、double型の値...
int型の値とdouble型の値を演算すると、暗黙的型変換によって...
int型の値とint型の値をdouble型にして演算したい場合には、'...
キャストも演算子の一つです。
演算子には''優先順位''があり、優先順位の低い演算を先に行...
----
*練習問題 [#y6a5e51a]
演算の練習問題は[[こちら>/授業/C言語基礎/演算/練習問題]]。
終了行:
コンピューターが行う計算を''演算''といいます。
演算に用いられる記号を''演算子''といい、いろいろな種類が...
*代入演算子 [#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型にな...
int型の値とdouble型の値の算術演算を行うと、int型の値がdou...
注意が必要なのは、int型の値をint型の値で割ったときです。
たとえば、次のプログラムについて考えてみます(プログラム1...
#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型の...
これを避けるためには、いずれかの値(あるいは両方の値)をd...
#geshi(c){{
#include <stdio.h>
int main(void) {
double d = 3 / 2.0;
printf("d = %f\n", d);
return 0;
}
}}
#geshi(c){{
#include <stdio.h>
int main(void) {
double d = 3.0 / 2;
printf("d = %f\n", d);
return 0;
}
}}
**練習3 [#u9810330]
プログラム1を作成し、実行結果を確認せよ。
また、作成したプログラムをプログラム2, 3のように変更し、...
*明示的型変換(キャスト) [#o3c3bd5a]
int型の値をint型の値で割ってdouble型の値の結果を得たいと...
キャストは、次のように、変換後の型をカッコ ''( )'' で囲ん...
(型) 変数名
たとえば、int型の値をint型の値で割ってdouble型の結果を得...
#geshi(c){{
#include <stdio.h>
int main(void) {
int i = 3, j = 2;
double d = (double) i / j;
printf("d = %f\n", d);
return 0 ;
}
}}
これを実行すると、割り算が行われる前にキャストによって変...
double型の値とint型の値の計算になるので、int型の値がdoubl...
**練習4 [#t73d1c8b]
プログラム1をプログラム4のように変更し、実行結果を確認せ...
**演習5 [#f4528a06]
int型の変数に5を代入し、複合代入演算子を用いてその変数に4...
*演算子の優先順位 [#jb6c81ee]
演算子に優先順位があります。
数学における計算の優先順位と同じように、算術演算子におい...
優先順位が低い演算を先に行う場合は、次のように、優先する...
#geshi(c){{
#include <stdio.h>
int main(void){
int i = 1 + 2 * 3, j = (1 + 2) * 3;
printf("i = %d, j = %d\n", i, j);
return 0;
}
}}
このプログラムを実行すると、次のようになります。
#geshi(sh)){{
luna% a.out
i = 7, j= 9
}}
これまでに出てきた演算子の優先順位は、次のようになります。
|優先順位|演算子|使用例|意味|h
|2|+|+a|正の数|
|~|−|−a|負の数|
|3|()|(b) a|キャスト|
|4|*|a * b|積|
|~|/|a / b|商|
|~|%|a % b|剰余|
|5|+|a + b|和|
|~|−|a − b|差|
|15|=|a = b|代入|
1から順に並んでいないのは、まだ勉強していない演算子がある...
正の数、負の数を表す演算子は、作用する相手(項)が一つし...
作用する相手が二つの演算子は''二項演算子''といいます。
(まだ出てきていませんが,三項演算子もあります。)
演算子の+と−は,単項演算子としても二項演算子として...
**演習6 [#wc37d442]
プログラム5を作成し、実行結果を確認せよ。
----
*誤差(おまけ) [#l369e7c2]
10進数の[math]0.1[/math]を2進数に直すと、[math]0.00011001...
double型の仮数部は52ビットですから、double型の仮数部に収...
そこで、このようなときには、仮数部に収めることができなか...
(10進数の四捨五入のような感じで、2進数で''最近接偶数丸め...
このため、double型の変数に10進数の[math]0.1[/math]を代入...
次のプログラムは、[math]0.1[/math]をdouble型の変数に代入...
#geshi(c){{
#include <stdio.h>
int main(void) {
double d = 0.1;
printf("d = %.30f\n", d);
return 0;
}
}}
(小数点以下の桁数を指定する方法については、後できちんと...
このプログラムを実行すると、次のようになります。
#geshi(sh){{
luna% ./a.out
d = 0.100000000000000005551115123126
}}
このような丸めによって生じた誤差を''丸め誤差''といいます。
この他にも、コンピューターで計算すると幾つかの種類の誤差...
誤差についての詳しいことは、計算機アーキテクチャーや数値...
**演習7 [#v7fa458e]
プログラム6を作成し、実行結果を確認せよ。
----
*まとめ [#o1a9a495]
コンピューターが行う計算を''演算''といい、演算に用いられ...
''代入演算子''は代入を行う演算子、''算術演算子''は算術演...
int型の値とint型の値を演算した結果はint型に、double型の値...
int型の値とdouble型の値を演算すると、暗黙的型変換によって...
int型の値とint型の値をdouble型にして演算したい場合には、'...
キャストも演算子の一つです。
演算子には''優先順位''があり、優先順位の低い演算を先に行...
----
*練習問題 [#y6a5e51a]
演算の練習問題は[[こちら>/授業/C言語基礎/演算/練習問題]]。
ページ名: