32bit整数型で扱える範囲より大きい値を扱うときは明示的に64bit整数型を指定する【C++】

タイトルが当たり前ですが、つまりこういうことです。 以下に例を示します。

int main()
{
    std::cout << "(NG) 4000^3 = " << 4000 * 4000 * 4000 << std::endl;
    std::cout << "(OK) 4000^3 = " << 4000LL * 4000 * 4000 << std::endl;
}
(NG) 4000^3 = -424509440
(OK) 4000^3 = 64000000000

上記コードのように演算結果が32bit整数型で扱える範囲を超えても自動で64bit整数には拡張されませんので、 32bit整数型で扱える範囲より大きい値を扱うときは明示的に64bit整数型を指定します。
ちなみに8bitや16bit整数型では演算時に暗黙で32bit整数に拡張されます。
なお、bit幅の異なる整数の2項演算時には幅の大きいほうに拡張されますので、 上のコードの(OK)の例では1番目の4000にだけ接尾辞を付けています。(C++の乗算は左結合なので)

試した環境

Wandbox https://wandbox.org/permlink/kRIOtkwpL51cjwUG