Warning C26450
Arithmetic overflow: 'operator' operation causes overflow at compile time. Use a wider type to store the operands (io.1)
Remarks
This warning indicates that an arithmetic operation was provably lossy at compile time. It can be asserted when the operands are all compile-time constants. Currently, we check left shift, multiplication, addition, and subtraction operations for such overflows.
Warning C4307 is a similar check in the Microsoft C++ compiler.
Code analysis name: RESULT_OF_ARITHMETIC_OPERATION_PROVABLY_LOSSY
Examples
int multiply()
{
const int a = INT_MAX;
const int b = 2;
int c = a * b; // C26450 reported here
return c;
}
To correct this warning, use the following code.
long long multiply()
{
const int a = INT_MAX;
const int b = 2;
long long c = static_cast<long long>(a) * b; // OK
return c;
}
See also
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Submit and view feedback for