检查无符号是否小于零

dto*_*och 6 c

玩一些来源发现这样的代码:

void foo(unsigned int i)
{
 if(i<0)
     printf("Less then zero\n");
 else
     printf("greater or equ\n");
}

int main()
{
    int bar = -2;
    foo(bar);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我认为没有任何意义,但可能有一些案例(安全性?)使这个检查变得敏感?

era*_*ert 13

根据定义,unsigned int不能小于0.所以,为了更直接地回答你的问题,你认为这是没有意义的.它不是一个有意义的安全项,除非你遇到一个循环,它意外地将一个有符号的int递减到0,然后将其转换为unsigned int,用作数组的索引,从而索引数组之外的内存.