タイトルが当たり前ですが、つまりこういうことです。 以下に例を示します。
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++の乗算は左結合なので)