16
C 言言言言 言言言言言言言

7_C言語入門 - 型変換について

  • Upload
    bcrikko

  • View
    508

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 7_C言語入門 - 型変換について

C 言語入門~ 型変換について ~

Page 2: 7_C言語入門 - 型変換について

2本日の目標

• 型変換(キャスト)について覚える

Page 3: 7_C言語入門 - 型変換について

型変換は 2 種類ある

Page 4: 7_C言語入門 - 型変換について

コンパイラがやってくれる暗黙の型変換

Page 5: 7_C言語入門 - 型変換について

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 型への暗黙の型変換が行われる

※ 小さいサイズの型から 大きいサイズの型への 変換のため、問題なし

Page 6: 7_C言語入門 - 型変換について

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 型への暗黙の型変換が行われる

※ 大きいサイズの型から 小さいサイズの型への 変換のため、入りきらない データは失われる

Page 7: 7_C言語入門 - 型変換について

プログラマが意図的に行う明示的型変換

Page 8: 7_C言語入門 - 型変換について

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 型へ明示的な変換が行われる

「 ( 型 ) 式 」と記述する

Page 9: 7_C言語入門 - 型変換について

9明示的な変換を行う場合

• 型変換時にデータが失わられるとき(暗黙の型変換でもできるが、意図的な変換であることを明示するため)

• なんらかの理由で型変換ができないとき

Page 10: 7_C言語入門 - 型変換について

暗黙の型変換には規則がある

Page 11: 7_C言語入門 - 型変換について

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 型に変換されて計算される

Page 12: 7_C言語入門 - 型変換について

12暗黙の型変換の規則②

「やさしい C 」 p.106

char int float double< < <

サイズが大きい方に型変換される

Page 13: 7_C言語入門 - 型変換について

暗黙の型変換の注意点

Page 14: 7_C言語入門 - 型変換について

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

=

Page 15: 7_C言語入門 - 型変換について

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

=

Page 16: 7_C言語入門 - 型変換について

16演習問題

1. 5 科目のテストの点数(整数)を入力し、

合計点と平均点を表示する(ファイル名: ex07-01.c )

2. ふたつの整数値を入力し、割合( x / y )

を表示する(ファイル名: ex07-02.c )