Menu
Coddy logo textTech

型変換 パート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 / 23.5 ではなく 3 になります。小数の結果を得るには、少なくとも一方のオペランドが double 型である必要があります(例:7 / 2.03.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) valuestatic_cast<int>(value) の両方が同じ結果を生成しますが、モダンなC++では static_cast<>() が推奨される手法です。これは変換を明確に可視化し、コンパイラによってチェックされるためです。

challenge icon

チャレンジ

初心者

型キャストを実演する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になります

注意: doubleint にキャストすると、小数部が切り捨てられます。モダンな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;
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン