这个问题是编译器指出您的代码中有一个无意义的比较:将一个无符号整数与零进行比较。
通常,无符号整数始终是非负的,因此检查它是否大于或等于零是没有必要的。例如,下面的代码会导致这种警告:
1unsigned int value;
2//...
3if (value >= 0) { // 这种比较对于无符号整数是不必要的
4 //...
5}
这个报错的解释是这样的,但是往往解决方法都是怎么对这个判断进行改进,不用这个判断。如果确实这样写,其实也有另外一个解法,就是把无符号整数改成有符号整数就行了,
unsigned int value;
改成
int value;
对于for循环中循环自身范围判断也是同样使用,问题代码如下:
u8 t;
if(decimal_digits > 0)
{
for (t = decimal_digits - 1; t >= 0; t--)
{
}
}
改成如下即可:
int t;
if(decimal_digits > 0)
{
for (t = decimal_digits - 1; t >= 0; t--)
{
}
}