编译器警告(等级 1)C4319
“~”:将“type1”零扩展到更大的“type2”
~(按位求补)运算符的结果无符号,然后在转换为更大的类型时进行零扩展。
示例
在下面的示例中,~(a - 1)
是按 32 位无符号 long 表达式进行计算的,然后通过零扩展转换为 64 位。 这会导致意外的运算结果。
// C4319.cpp
// compile with: cl /W4 C4319.cpp
int main() {
unsigned long a = 0;
unsigned long long q = 42;
q = q & ~(a - 1); // C4319 expected
}
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈