c++ - 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;
}
解决方案
当i
为 0 时,i >= 0
将为真,您将申请i--
.
那么,你期望i
取什么值呢?它不能-1
取值,因为它是无符号的,所以i
会变成 255。
但是 255 是>=0
这样循环将继续。永远。
相反,请考虑使用:
for(int i = 7; i >= 0; i--)
推荐阅读
- c# - Powershell 二进制模块:未加载指定的模块“”,因为在任何模块目录中都找不到有效的模块文件
- angular - 使用 forkJoin Angular 5 的 MergeMap 问题
- android - 导航架构组件 - 活动目的地和 OnNavigatedListener
- java - DeepEquals.deepEquals(refObject, ref)
- unix - 无法从文件中删除控制@
- python - Django Ajax POST 请求:内部服务器错误
- r - 自定义flextable中标题的颜色?
- java - 创建 jooq 自定义映射器时无法返回泛型
- java - 在注解处理环境中获取静态初始化器
- c# - 如何从远程 IBM MQ 不断获取消息