为什么比较无符号Int> = 0"无意义比较"?

Jos*_*osh 19 c c++ comparison unsigned for-loop

我收到警告:

Pe186"无符号int与零的无意义比较"

当我尝试编译以下代码时:

for(clLoop = cpLoopStart; clLoop >= 0; clLoop--)                                  
{
    //Do something
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么.我能理解,如果我正在寻找一个小于零的值,因为一个unsigned int永远不会是负面的.但是,所有我在这里寻找是,如果它是等于为零,其中unsigned int当然也可以.

我甚至可以看到这个错误,如果在这个循环中我试图预先减少而不是后减量,但是情况并非如此.

Tim*_*mbo 45

检查unsigned int是否大于或等于(>=)零.此表达式始终为true,因为无符号整数永远不会小于零.

编译器试图警告您即将编程无限循环.


Ole*_*ann 8

您正在检查unsigned int是否等于或大于 0.这总是正确的.