我不太清楚为什么 Visual Studio 会给我以下代码的错误消息“错误定义的 for 循环:'unsigned int' 值始终在 '0' 到 '4294967295' 范围内。循环无限执行”:
for (unsigned int i = list->GetCount() - 1; i >= 0; i--)
{
// do stuff to each item (specifically in reverse order)
}
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释一下吗?
编辑: GetCount() 返回一个无符号整数,我无法控制它
当你从一个类型中减去 0 时unsigned,你得到的不是一个负数,而是一个非常大的正数。
这意味着这个条件:
i >= 0
Run Code Online (Sandbox Code Playgroud)
永远为真,导致无限循环。
您可以通过执行以下操作来解决此问题:
for (int i = static_cast<int>(list->GetCount()) - 1; i >= 0; i--)
Run Code Online (Sandbox Code Playgroud)
请注意,转换需要在减 1之前完成,否则当GetCount返回 0 时,您将遇到相同的换行问题。
| 归档时间: |
|
| 查看次数: |
4085 次 |
| 最近记录: |