首页 > 解决方案 > C++,“由于数据类型的范围有限,比较总是正确的”

问题描述

我遇到了这个 for 循环的问题:编译器说:“错误:由于数据类型 [-Werror=type-limits] 的范围有限,比较总是正确的”,指的是“for(...)”部分。我不明白为什么,因为比较并不总是正确的。

for(unsigned char i = 7; i >= 0; i--)
{
    if(dec % 2 == 0) binary[i] = '0';
    else binary[i] = '1';
    if(dec/2 <= 0) return binary; else dec /= 2;
}

标签: c++for-loop

解决方案


i为 0 时,i >= 0将为真,您将申请i--.

那么,你期望i取什么值呢?它不能-1取值,因为它是无符号的,所以i会变成 255。

但是 255 是>=0这样循环将继续。永远。

相反,请考虑使用:

for(int i = 7; i >= 0; i--)

推荐阅读