' P '

whatever I will forget

C++ 変数型タイプのキャスティングについて

Lower / HIgher タイプの互換

lower(int) op higher(double)

2 * 0,5
2 は 2.0 に変換される

lower = higher
int num {0};
num = 100.2;

100.2はintの100に変換される

lowerからhigherは予期せぬ動作にならないが、(ならないこともないがマシ) higherからlowerは困るので、そういう時は下記のようなキャスティングを行う

#include <iostream>
using namespace std;

int num {10};
int count {3};
double ave {0};

ave = static_cast<double> (num) / count;
cout << ave << endl;

とすると、aveは3.333...になる。 何もしないとint型の3になってしまう

ちなみに、 ave = (double)num / count でもいけるけど、せっかくC++なので、oldスタイルをわざわざ強調する必要もないのでは。