C++,"由于数据类型范围有限,比较总是正确的"

C++, "comparison is always true due to limited range of data type"

本文关键字:比较 数据类型 范围 C++      更新时间:2023-10-16

我在循环中遇到了问题: 编译器说: "错误:由于数据类型范围有限,比较始终为真 [-Werror=类型限制]" 指的是"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;
}

i为 0 时,i >= 0为真,您将应用i--

那么,你期望i获得什么价值?它不能采用-1值,因为它是无符号的,因此i将变为 255。

但是 255 是>=0所以循环将继续。永远。

相反,请考虑使用:

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