型変換 パート1
CoddyのC++ジャーニー「基礎」セクションの一部 — レッスン 14/74。
型変換(タイプキャスティング)とは、あるデータ型から別のデータ型へ値を変換するプロセスのことです。
C++では、整数をdouble型に、double型を整数に、といった変換が可能です。キャストには、暗黙的(自動)キャストと明示的(手動)キャストの2種類があります。
例えば Integer to Double:
暗黙的(自動)型変換:
int number = 5;
double decimal = number; // 自動的に 5.0 になります
// 計算を伴う場合
int x = 7;
double result = x / 2.0; // 結果は 3.5注意: 2つの int 型の値を割るとき、C++は整数除算を行います。つまり、小数点以下は切り捨てられます。例えば、7 / 2 は 3.5 ではなく 3 になります。小数の結果を得るには、少なくとも一方のオペランドが 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) の両方が同じ結果を生成しますが、モダンなC++では static_cast<>() が推奨される手法です。これは変換を明確に可視化し、コンパイラによってチェックされるためです。
チャレンジ
初心者型キャストを実演するC++プログラムを作成してください。以下を行ってください:
price変数をintにキャストし、その結果をintPriceという名前の新しい変数に格納してください。
チートシート
型キャストは、値をあるデータ型から別のデータ型に変換します。
暗黙的(自動)キャスト — 自動的に行われます:
int number = 5;
double decimal = number; // 自動的に5.0になります
int x = 7;
double result = x / 2.0; // 結果は3.5です(int/intは小数部を切り捨てます)明示的(手動)キャスト — Cスタイルおよびモダンな static_cast:
double price = 19.99;
int a = (int) price; // Cスタイル:19になります
int b = static_cast<int>(price); // モダンなC++で推奨:19になります注意: double を int にキャストすると、小数部が切り捨てられます。モダンなC++では、明快さとコンパイラの安全性のために static_cast<>() が推奨されます。
自分で試してみよう
#include <iostream>
int main() {
// 変数の宣言と初期化
double price = 99.99;
int intPrice = ?; // doubleからintへの明示的なキャスト
// 値を出力
std::cout << "Price: " << price << std::endl;
std::cout << "Int Price: " << intPrice << std::endl;
return 0;
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。