警告 C26452
算术溢出:左移计数为负或者大于或等于未定义行为的操作数大小 (io.3)
备注
此警告指示移位计数为负数,或者大于或等于移位操作数中的位数。 这两种情况都会导致未定义的行为。
警告 C4293 是 Microsoft C++ 编译器中的类似检查。
代码分析名称:SHIFT_COUNT_NEGATIVE_OR_TOO_BIG
示例
unsigned long long combine(unsigned lo, unsigned hi)
{
return (hi << 32) | lo; // C26252 here
}
若要更正此警告,请使用以下代码:
unsigned long long combine(unsigned lo, unsigned hi)
{
return (static_cast<unsigned __int64>(hi) << 32) | lo; // OK
}
另请参阅
26450
26451
26453
26454
ES.101:对位操作使用无符号类型
ES.102:对算术使用带符号类型
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈