C++,"由于数据类型范围有限,比较总是正确的"
C++, "comparison is always true due to limited range of data type"
我在循环中遇到了问题: 编译器说: "错误:由于数据类型范围有限,比较始终为真 [-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--)
相关文章:
- 防止主数据类型C++的隐式转换
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在C++中打印指向不同基元数据类型的指针的内存地址
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- 如何计算数据类型的范围,例如int
- C++中数据类型修饰符的顺序
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- C++,"由于数据类型范围有限,比较总是正确的"
- C++ - 比较模板和类之间的数据类型
- 可以比较不同数据类型 c++ 的模板函数
- 比较C 中BOOL数据类型的比较
- 不使用比较的数据类型的比较
- 如何为数据类型 vector<glm::vec3> (opengl 数据类型) 编写 std::minmax 函数的自定义比较器
- 比较C 中的两个数据类型
- 比较If语句中的数据类型
- 比较vtk数据类型和基本数据类型
- 将变量与 C++ 中的数据类型进行比较
- GCC:由于数据类型范围有限,比较始终为真 - 在模板参数中
- 由于数据类型的范围有限,比较总是错误的
- 二进制比较的结果简化为什么数据类型