gpt4 book ai didi

c++ - "Ill-defined for-loop - loop executes infinitely"(MSVC C6295)

转载 作者:行者123 更新时间:2023-12-02 09:48:34 27 4
gpt4 key购买 nike

我不太确定为什么 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)
}

谁能给我解释一下吗?

编辑:GetCount() 返回一个无符号整数,我无法控制它

最佳答案

当您从 unsigned 类型中减去 0 时,您得到的不是负数,而是一个非常大的正数。

这意味着这种情况:

i >= 0

将始终为真,从而导致无限循环。

您可以通过以下方式解决此问题:

for (int i = static_cast<int>(list->GetCount()) - 1; i >= 0; i--)

请注意,转换需要在减 1 之前完成,否则当 GetCount 返回 0 时,您将遇到相同的包装问题。

关于c++ - "Ill-defined for-loop - loop executes infinitely"(MSVC C6295),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62624816/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com