C型変換
型変換
場合によっては、あるデータ型の値を別の型に変換する必要があります。 これは型変換として知られています。
たとえば、 5
を 2
で割ろうとすると、結果は 2.5
になると予想されます。 ただし、整数 (浮動小数点値ではない) を操作しているため、次の例では 2 が出力されます。
C には 2 種類の変換があります。
- 暗黙の変換(自動的)
- 明示的な変換(手動)
暗黙の変換
暗黙的な変換は、ある型の値を別の型に代入するときに、コンパイラによって自動的に行われます。
たとえば、int
値を float
型に代入すると、次のようになります。
例
// Automatic conversion: int to float
float myFloat = 9;
printf("%f", myFloat); // 9.000000
9
を float 値 9.000000
に自動的に変換します。
特定の状況で特定の値を制御できなくなる可能性があるため、これは危険な場合があります。
特にその逆の場合は、次の例では float 値 9.99
を int 値 9
に自動的に変換します。
別の例として、5 を 2 で割ると、答えは 2.5 であることがわかります。 そして、このページの最初からご存知のとおり、合計を整数として保存すると、結果には数値 2 のみが表示されます。したがって、合計を float
または double
として保存する方がよいでしょう。
2.5
ではなく 2.00000
になるのでしょうか? 割り算では 5 と 2 は依然として整数だからです。 この場合、整数値を浮動小数点値に手動で変換する必要があります。 (以下を参照してください)。
明示的な変換
明示的な変換は、値の前のかっこ () 内に型を置くことによって手動で行われます。
上記の例の問題を考えると、正しい結果を得ることができます。
例
// Manual conversion: int to float
float sum = (float) 5 / 2;
printf("%f", sum); // 2.500000
変数の前に型を置くこともできます:
例
int num1 = 5;
int num2 = 2;
float sum = (float) num1 / num2;
printf("%f", sum); // 2.500000
例
int num1 = 5;
int num2 = 2;
float sum = (float) num1 / num2;
printf("%.1f", sum); // 2.5
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。