スポンサードリンク
HOME > C言語 > 型変換 - キャスト

C言語 - 型変換 - キャスト

変数同士の代入や計算は、同じデータ型で行うのが基本ですが、
互いに異なるデータ型変数に対しても代入や計算ができるようになっています。

これをキャスト(型変換)と言います。

例1)表現能力の低い型から高い型へ代入する場合
char  c;
short  s;
int   i;
float  f;
double d;

s = c;
i = s;

d = f;

この例の場合は、全く問題なくキャストが行われ、正常に代入されます。

例2−1)表現能力の高い型から低い型へ代入する場合
char  c;
short  s;
int   i;
float  f;
double d;

c = s;
s = i;

f = d;

この例の場合は、値が一部失われてしまう事があります。
ただ、こういった処理をやる場合、コンパイル時に警告を出してくれる場合もあります。

一般的に例2−1のような型変換は、避けるようにしましょう。

例2−2)表現能力の高い型から低い型へ代入する場合
明示的な型変換(キャスト)


char  c;
short  s;
int   i;
float  f;
double d;

c = (char)s;
s = (short)i;

f = (float)d;

この場合も、例2−1のように型変換されますが、
コンパイル時に警告は出ません。
つまり、この型変換はプログラマが了承済ですよ。という事を表しています。

警告が邪魔な時、プログラムを分かりやすく記述したい時などに有効です。

例3)異なるデータ型変数で計算する場合
char  c;
short  s;
int   i;
float  f;
double d;

f = c * i + s / d;

@まず、c * i が行われますが、異なるデータ型なので、
表現能力の高い型に変換してから計算されます。
この場合は c が int 型に変換されて計算されます。

A次に s / d が行われますが、これも異なるデータ型なので、
この場合は s が double 型に変換されて計算されます。

B次は、@ + Aの計算ですが、これも int 型と double 型なので、
この場合は、@が double 型に変換されて計算されます。

C最後に、f = Bとなります。
例2−1のように型変換され、f に代入されます。

基本的に、異なる型同士の計算は避けた方が無難です。

例4)関数の引数として渡す場合

void kansu(double a); // プロトタイプ宣言

int i=50;

kansu(i);
kansu(100);

kansu(i) の場合は、int型変数を渡していますが、この時にも型変換が行われ、
double型に変換されて kansu に渡されます。

次にkansu(100)の場合は、定数を渡していますが、ここでも型変換され、
double型に変換されて kansu に渡されます。



極力、型変換は、使用しないようにプログラムを組むのが良いですが、
場合によるので、型変換が必須の時には、多少複雑になる事が多いので、
コメントを多く記述する等、プログラムを分かりやすくするようにしましょう。



スポンサードリンク







HOME

言語解説編
プログラミング用語・知識

C言語

C++言語

Java

C#

Visual Basic.NET

アプリケーション編
C言語による
コンソールプログラミング




Copyright (C) プログラミングランド All Rights Reserved