Upload
bcrikko
View
508
Download
0
Embed Size (px)
Citation preview
C 言語入門~ 型変換について ~
2本日の目標
• 型変換(キャスト)について覚える
型変換は 2 種類ある
コンパイラがやってくれる暗黙の型変換
5暗黙の型変換①
「やさしい C 」 p.101
#include <stdio.h> int main(void) { int inum; double dnum;
inum = 160; printf(" 身長は %d センチです。 \n", inum);
printf("double 型の変数に代入します。 \n");
dnum = inum; printf(" 身長は %f センチです。 \n", dnum);
return 0; }
入力するプログラム( Sample8.c )
int 型 → double 型への暗黙の型変換が行われる
※ 小さいサイズの型から 大きいサイズの型への 変換のため、問題なし
6
#include <stdio.h> int main(void) { double dnum; int inum; dnum = 160.5; printf(" 身長は %f センチです。 \n", dnum);
printf("int 型の変数に代入します。 \n");
inum = dnum; printf(" 身長は %d センチです。 \n", inum);
return 0; }
暗黙の型変換②
「やさしい C 」 p.103
入力するプログラム( Sample9.c )
double 型 → int 型への暗黙の型変換が行われる
※ 大きいサイズの型から 小さいサイズの型への 変換のため、入りきらない データは失われる
プログラマが意図的に行う明示的型変換
8明示的型変換
「やさしい C 」 p.104
#include <stdio.h> int main(void) { double dnum; int inum; dnum = 160.5; printf(" 身長は %f センチです。 \n", dnum);
printf("int 型の変数に代入します。 \n");
inum = (int)dnum; printf(" 身長は %d センチです。 \n", inum);
return 0; }
入力するプログラム
double 型 → int 型へ明示的な変換が行われる
「 ( 型 ) 式 」と記述する
9明示的な変換を行う場合
• 型変換時にデータが失わられるとき(暗黙の型変換でもできるが、意図的な変換であることを明示するため)
• なんらかの理由で型変換ができないとき
暗黙の型変換には規則がある
11暗黙の型変換の規則①
「やさしい C 」 p.106
#include <stdio.h> int main(void) { int d = 2; double pi = 3.14;
printf(" 直径が %d センチの円の \n", d); printf(" 円周は %f センチです。 \n", d * pi);
return 0; }
入力するプログラム( Sample10.c )
変数 d が double 型に変換されて計算される
12暗黙の型変換の規則②
「やさしい C 」 p.106
char int float double< < <
サイズが大きい方に型変換される
暗黙の型変換の注意点
14暗黙の型変換の注意点①
「やさしい C 」 p.107
入力するプログラム( Sample11.c )
#include <stdio.h> int main(void) { int num1, num2; double div;
num1 = 5; num2 = 4;
div = num1 / num2;
printf("5/4 は %f です。 \n", div);
return 0; }
int 型の計算結果を代入するため、
小数点以下が失われる
int(num1)
int(num2)
int(num1 / num2)
double
=
15
#include <stdio.h> int main(void) { int num1, num2; double div;
num1 = 5; num2 = 4;
div = (double)num1 / (double)num2;
printf("5/4 は %f です。 \n", div);
return 0; }
暗黙の型変換の注意点②
「やさしい C 」 p.107
入力するプログラム( Sample11.c )
double 型に変換してから計算しているため、
小数点以下が保持される
double
(num1)
double
(num2)
double(num1 / num2)
double
=
16演習問題
1. 5 科目のテストの点数(整数)を入力し、
合計点と平均点を表示する(ファイル名: ex07-01.c )
2. ふたつの整数値を入力し、割合( x / y )
を表示する(ファイル名: ex07-02.c )