型変換 パート1
CoddyのC++ジャーニー「基礎」セクションの一部。レッスン 14/74。
型変換とは、値をあるデータ型から別のデータ型に変換する処理です。
C++では、整数を倍精度浮動小数点数に、倍精度浮動小数点数を整数に変換するなど、さまざまな変換ができます。キャストには、暗黙的(自動)キャストと明示的(手動)キャストの2種類があります。
たとえば Integer to Double:
暗黙的(自動)な型変換:
int number = 5;
double decimal = number; // 自動的に5.0になる
// 計算を伴う場合
int x = 7;
double result = x / 2.0; // resultは3.5になる注意:2 つの int 値を割るとき、C++ は整数除算を行い、小数部分は切り捨てられます。たとえば、7 / 2 の結果は 3 であり、3.5 ではありません。小数の結果を得るには、少なくとも一方のオペランドが double である必要があります(例:7 / 2.0 の結果は 3.5 です)。
明示的(手動)キャスト Double to Integer:
double decimal = 9.7;
int number = (int) decimal; // 9になる(小数部分は切り捨てられる)
// 計算を伴う場合
double price = 19.99;
int roundedPrice = (int) price; // 19になる現代的なC++で推奨されるスタイル:Cスタイルのキャストである(int) decimalを使うよりも、意図がより明確で安全なstatic_cast<>()を使うのが望ましいです。
double decimal = 9.7;
int number = static_cast<int>(decimal); // 9 になる(小数部分は切り捨てられる)
double price = 19.99;
int roundedPrice = static_cast<int>(price); // 19 になる注意:(int) valueとstatic_cast<int>(value)はどちらもここでは同じ結果になりますが、static_cast<>()は変換が明確に示され、コンパイラーによるチェックも行われるため、現代のC++では推奨される方法です。
チャレンジ
初心者型キャストを示すC++プログラムを書いてください。次の操作を行います。
price変数をintにキャストし、結果をintPriceという新しい変数に格納してください。
自分で試してみよう
int intPrice = ?; // double から int への明示的なキャスト
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: C++オンラインコンパイラ