警告 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;
}
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈