Freigeben über


Warnung C26450

Arithmetische Überlauf: "Operator"-Vorgang verursacht Überlauf zur Kompilierungszeit. Verwenden Eines breiteren Typs zum Speichern der Operanden (io.1)

Hinweise

Diese Warnung weist darauf hin, dass ein arithmetischer Vorgang zur Kompilierungszeit nachweislich verloren ging. Sie kann bestätigt werden, wenn die Operanden alle Kompilierungszeitkonstanten sind. Derzeit überprüfen wir die Linke Schicht-, Multiplikations-, Additions- und Subtraktionsvorgänge für solche Überläufe.

Warnung C4307 ist eine ähnliche Überprüfung im Microsoft C++-Compiler.

Codeanalysename: RESULT_OF_ARITHMETIC_OPERATION_PROVABLY_LOSSY

Beispiele

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

Verwenden Sie den folgenden Code, um diese Warnung zu korrigieren.

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

Siehe auch

26451
26452
26453
26454
ES.103: Nicht überlaufen