数値昇格
ある型の値がより大きな同様のデータ型の値に変換されるときはいつでも、これは数値昇格 (または拡大、ただしこの用語は通常整数用に予約されています) と呼ばれます。たとえば、int を long に拡張したり、float を double に拡張したりできます。
1 2 長さ l(64); // 整数 64 を long double d(0.12f) に拡張します。// float 0.12 を double に昇格する 「数値昇格」という用語はあらゆるタイプの昇格をカバーしますが、C++ では特定の意味を持つ他の 2 つの用語があります。
整数昇格には、int よりも狭い整数型 (bool、char、unsigned char、signed char、unsigned short、signed short を含む) の整数 (可能な場合) または unsigned int への変換が含まれます。浮動小数点昇格には、float から double への変換が含まれます。整数昇格と浮動小数点昇格は、小さなデータ型を int/unsigned int または double に変換する特定のケースで使用されます。これらのデータ型は通常、操作を実行するのに最もパフォーマンスが高いためです。
プロモーションについて覚えておくべき重要なことは、プロモーションは常に安全であり、データが失われないということです。
ソース:
http://www.learncpp.com/cpp-tutorial/44-implicit-type-conversion-coercion/