【发布时间】:2017-12-13 22:15:21
【问题描述】:
考虑下面的代码:
for (var i = int.MaxValue - 2; i < int.MaxValue; i++)
{
Console.WriteLine(i);
}
Console.WriteLine();
for (var i = int.MaxValue - 2; i <= int.MaxValue - 1; i++)
{
Console.WriteLine(i);
}
Console.WriteLine();
for (var i = int.MaxValue - 2; i <= int.MaxValue; i++)
{
Console.WriteLine(i);
}
预计前两个循环只打印第三和第二大整数。
最后一个循环有一个错误,i 会溢出到int.MinValue 并导致无限循环。
运行它会给出预期的输出。
2147483645
2147483646
2147483645
2147483646
2147483645
2147483646
...
PVS Studio 发出三个警告:
V3022 表达式 'i
V3022 表达式 'i
V3022 表达式 'i
最后一个循环中的错误被正确报告,但前两个警告是误报。
【问题讨论】:
-
感谢您的反馈。我们很快就会看到这个误报。
标签: pvs-studio