相关疑难解决方法(0)

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

我收到警告:

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

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

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

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

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

c c++ comparison unsigned for-loop

19
推荐指数
2
解决办法
3万
查看次数

如何验证参数是正数?

虽然,我确实将函数原型定义为具有size_t无符号类型的类型.我发现我仍然可以将负数传递给函数,但输出将是一个大的有符号十进制数.我问这个的原因是因为我想验证一个已知数组容量的数组索引.

#include <stdlib.h>
#include <stdio.h>
#include <limits.h>

void print(size_t i)
{
    printf("%zu\n", i);
}

int main()
{
    print(-1);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出: 18446744073709551615

是否可以验证size_t i变量是否大于0?如果是这样我怎么能这样做?gcc不喜欢我检查i >= 0因为它说i永远不会小于零.

编辑:

有待进一步说明.想象一下,您必须验证,而不是将任意小数传递给函数以获取索引i处的元素.我想确保传入的索引在边界内.边界是:[0,N)

c

2
推荐指数
1
解决办法
123
查看次数

标签 统计

c ×2

c++ ×1

comparison ×1

for-loop ×1

unsigned ×1