TECH I.S.

C型変換


型変換

場合によっては、あるデータ型の値を別の型に変換する必要があります。 これは型変換として知られています。

たとえば、 52 で割ろうとすると、結果は 2.5 になると予想されます。 ただし、整数 (浮動小数点値ではない) を操作しているため、次の例では 2 が出力されます。

int x = 5; int y = 2; int sum = 5 / 2; printf("%d", sum); // Outputs 2

自分で試してみる »

正しい結果を得るには、型変換がどのように機能するかを知る必要があります。

C には 2 種類の変換があります。

  • 暗黙の変換(自動的)

  • 明示的な変換(手動)

暗黙の変換

暗黙的な変換は、ある型の値を別の型に代入するときに、コンパイラによって自動的に行われます。

たとえば、int 値を float 型に代入すると、次のようになります。

// Automatic conversion: int to float float myFloat = 9; printf("%f", myFloat); // 9.000000

自分で試してみる»

ご覧のとおり、コンパイラは int 値 9 を float 値 9.000000 に自動的に変換します。

特定の状況で特定の値を制御できなくなる可能性があるため、これは危険な場合があります。

特にその逆の場合は、次の例では float 値 9.99 を int 値 9 に自動的に変換します。

// Automatic conversion: float to int int myInt = 9.99; printf("%d", myInt); // 9

自分で試してみる»

.99はどうなったのでしょうか? プログラムにそのデータが必要になるかもしれません ので注意してください。 予期しない結果を避けるために、このような状況でコンパイラがどのように動作するかを理解しておくことが重要です。

別の例として、5 を 2 で割ると、答えは 2.5 であることがわかります。 そして、このページの最初からご存知のとおり、合計を整数として保存すると、結果には数値 2 のみが表示されます。したがって、合計を float または double として保存する方がよいでしょう。

float sum = 5 / 2; printf("%f", sum); // 2.000000

自分で試してみる»

結果が 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

自分で試してみる»

前の章で「10 進精度」について学んだので、(必要に応じて) 余分なゼロを削除することで、出力をさらにきれいにすることができます。

int num1 = 5; int num2 = 2; float sum = (float) num1 / num2; printf("%.1f", sum); // 2.5

自分で試してみる»



プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細