【发布时间】:2011-07-01 06:47:34
【问题描述】:
我收到警告:
Pe186“无符号整数与零的毫无意义的比较”
当我尝试编译以下代码时:
for(clLoop = cpLoopStart; clLoop >= 0; clLoop--)
{
//Do something
}
我不明白为什么。我可以理解,如果我正在寻找一个 小于 零的值,因为 unsigned int 永远不会是负数。但我在这里寻找的只是它是否等于为零,unsigned int 当然可以。
如果在这个循环中我尝试预先递减而不是后递减,我什至可以看到这个错误,但事实并非如此。
【问题讨论】:
-
认为这样的错误消息可能取决于 pre 或 post(这里完全不相关)递增或递减是没有意义的—— clLoop 将采用任何一种方式的所有可能值。此外,如果 clLoop = 0 必须 也是无用的测试,因为 (clLoop = 0) .
-
这就是
while (clLoop--) { ... }更好的原因。
标签: c++ c for-loop comparison unsigned