型変換 パート1
CoddyのC++ジャーニー「基礎」セクションの一部。レッスン 14/74。
型変換とは、ある値を別のデータ型に変換する処理です。
C++では、整数をdoubleに、doubleを整数に変換するなど、さまざまな変換ができます。castingには2種類あります。implicit(automatically)castingとExplicit(手動)castingです。
たとえば Integer to Double:
暗黙的(automatically)なキャスト:
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 です)。
Explicit(手動)Casting Double to Integer:
double decimal = 9.7;
int number = (int) decimal; // 9になる(小数部分は切り捨てられる)
// 計算あり
double price = 19.99;
int roundedPrice = (int) price; // 19になるModern 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<>() は変換が明確に示され、コンパイラーによってチェックされるため、modern C++ で推奨されるアプローチです。
チャレンジ
初心者型キャストを実演する C++ プログラムを書いてください。次の操作を実行します。
price 変数を int にキャストし、その結果を intPrice という名前の新しい変数に格納してください。
自分で試してみよう
#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;
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: C++オンラインコンパイラ