<C言語>型変換(キャスト)
今回の記事でわかること
- 型変換とは何か
- 暗黙型変換と明示型変換の違いが分かる
- 計算や代入での方の扱い方が理解できる
型変換とは
プログラムで変数の型を変えることを型変換(キャスト)と呼びます
例えば、整数と少数を混ぜて計算したいとき、型変換を使わないと計算結果が意図と違うことがあります
#include <stdio.h>
int main(void) {
int a = 5;
int b = 2;
double result = a / b; // int / int の計算
printf("result = %f\n", result);
return 0;
}
/*出力結果
result = 2
*/
a と b はどちらも int 型なので、計算は整数同士で行われます
結果は2となり、小数部分は切り捨てられます
明示的な型変換(キャスト)
少数も欲しい場合は、型変換(キャスト)を明示的に行う必要があります
#include <stdio.h>
int main(void) {
int a = 5;
int b = 2;
double result = (double)a / b; // a を double に変換
printf("result = %f\n", result);
return 0;
}
/*出力結果
result = 2.500000
*/
(double)a で a を double 型に変換しています。計算が double / int となり、結果も小数付きで出力されます
暗黙型変換
C言語では、状況によって自動で肩が変わることがあります。これを暗黙型変換(implicit cast)と呼びます
#include <stdio.h>
int main(void) {
int a = 3;
double b = 2.0;
double result = a + b; // int + double
printf("result = %f\n", result);
return 0;
}
/*出力結果
result = 5.000000
*/
int の a が自動的に double に変換され、計算が double + double になります。案木片案は便利ですが、意図しない型変換で誤差やバグが出ることがあるので注意
型変換の注意点
- int → char など、小さい型に変換するとデータが切り捨てられることがある
- int → double など、大きい型に変換すると精度の問題が起こることがある
- ポインタ型のキャストもできるが、間違えるとクラッシュの原因になる