本文へスキップ
BecomeCoder

C++コース · 第2章 演算子 · レッスン8

型変換とキャスト

ブラウザで完結

導入

intdouble が混ざった計算では、型の扱いに注意が必要です。意図的に型を変えるキャストを覚えましょう。

説明

レッスン5で見たとおり、int どうしの割り算は切り捨てられます。小数で計算したいときは、片方を double に変換します。(double) を前に付けるのが C スタイルのキャストです。

#include <iostream>
using namespace std;

int main() {
    int a = 7, b = 2;
    cout << a / b << endl;            // 3(整数割り算)
    cout << (double)a / b << endl;    // 3.5(a を double に変換してから割る)
    return 0;
}

逆に、小数を整数にすると小数部分が切り捨てられます。

#include <iostream>
using namespace std;

int main() {
    double price = 3.9;
    int rounded = (int)price;   // 3(切り捨て)
    cout << rounded << endl;
    // 平均点を小数で出す例
    int total = 250, count = 3;
    cout << (double)total / count << endl;  // 83.3333
    return 0;
}

型変換を意識すると、「なぜか小数が出ない」といった C++ 特有のつまずきを避けられます。

やってみよう

(double) を付けたり外したりして、結果が 33.5 で変わることを確かめましょう。(int) で小数が切り捨てられることも試してください。

演習

int total = 17, count = 4; の平均を、(double) を使って小数で表示してください(結果は 4.25)。

ヒント1を見る

cout << (double)total / count << endl;

実際に動かしてみよう

下のエディタにC++を書いて「実行」を押すと、ブラウザ内のインタプリタで出力が表示されます。本文の例をそのまま試したり、書き換えたりしてみましょう(cin を使う回は「標準入力」欄に値を入れてから実行します)。

C/C++ — ブラウザ内で実行

ブラウザ内でC/C++を動かす学習用インタプリタ(JSCPP)を読み込みます(入門向けのサブセットです)。
スクロールして表示された時点でも自動で読み込まれます。