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;
}