c++ - 为什么循环变得无限?
问题描述
如何摆脱无限循环?
unsigned char half_limit = 130;
for (unsigned char i = 0; i < 2 * half_limit; ++i)
{
//smth is happening;
}
请帮忙。
谢谢!
解决方案
使您的循环变量成为int
.
unsigned char
不能超过 255,因此递增i
过去会将其包装为 0。
2*130
是 260,因为字面量的类型2
是int
,并且将 anint
乘以unsigned char
得到int
.
因此,当i
是 a时unsigned char
,您的循环终止条件将永远不会满足,因为i
它将始终小于 260,因此是无限循环。
推荐阅读
- java - 我在 Java 中的一个布尔方法没有返回 true,我不知道如何纠正
- javascript - 通过将 redux 状态传递给 react 中的动态 react-pose 道具来移动 div
- apache-flink - 提交具有 2 个或更多任务管理器的本地 Apache Flink 作业
- javascript - 找不到已发布的 React 组件模块
- algorithm - 修改后的 Douglas-Peucker (TD-TR) 实施
- angular - 将自定义组件添加到反应式表单的 FormGroup 的正确方法是什么?
- html - 导航栏不是内联的
- javascript - 为什么我不能对“p”键使用“keypress”事件?
- matlab - matlab中图形的邻接列表中的邻接矩阵
- apache-spark - 检查 Spark 流作业是否挂起的最佳方法