次の方法で共有


警告 C26450

算術オーバーフロー: 'operator' 操作では、コンパイル時にオーバーフローが発生します。 より広い型を使用してオペランドを格納する (io.1)

解説

この警告は、コンパイル時に算術演算が明らかに損失したことを示します。 オペランドがすべてコンパイル時定数である場合にアサートできます。 現在、このようなオーバーフローについては、左シフト、乗算、加算、減算の各演算がチェックされています。

警告 C4307 は、Microsoft C++ コンパイラでも同様のチェックです。

コード分析名: RESULT_OF_ARITHMETIC_OPERATION_PROVABLY_LOSSY

int multiply()
{
    const int a = INT_MAX;
    const int b = 2;
    int c = a * b; // C26450 reported here
    return c;
}

この警告を解決するには、次のコードを使用します。

long long multiply()
{
    const int a = INT_MAX;
    const int b = 2;
    long long c = static_cast<long long>(a) * b; // OK
    return c;
}

関連項目

26451
26452
26453
26454
ES.103: オーバーフローしない