在非常小的循环中出错
Error in very little loop
我有很少的循环,i = 2
和L = 0
。 i
达到零后,我找到i == 18446744073709551615
,我的循环无限期地继续。
int L = 0;
size_t i = 2;
while (i >= L) {
// do some work here
i--;
}
为什么这个循环不终止?
您让我们完全不清楚样本中使用的类型,但从行为来看,我们可能会假设您实际上具有:
int L = 0;
size_t i = 2;
和循环条件
while (i >= L)
在i--
操作的下溢i
失败。
这意味着之后您将在i
中得到18446744073709551615
值,该值肯定大于0
(L
)。
unsigned
值永远不会小于0
,你的编译器应该把关于这个事实的警告吐到你的脸上(取决于内置的SCA功能)。
看起来i
是一个无符号整数,因此,总是大于或等于零。
相关文章:
- 如何循环打印顶点结构
- C++ 循环屏障中的倒计时使用原子变量出错[请无锁的解决方案]
- 在C++中调用while循环内的函数时出错
- C++ 使用 OpenMP 时,如果 for 循环在 if else 语句中出错
- 在循环中重新声明 for 循环变量时出错
- 从 OpenMP 循环内部访问和编辑 Qmap 时出错
- 我这秒 for 循环哪里出错了
- R6010 执行后出错.if 语句在 for 循环中.[作业][中止已解决,发现新问题]
- 使用For循环时出错
- 我的 for 循环出错,无法弄清楚原因,我有一个"expected declaration"错误
- while循环中出错
- 在发布模式下测量Visual Studio(C++)中循环内方法的运行时时出错
- ISR中使用的循环缓冲区(声明为volatile)会出错.为什么?如何解决此问题
- c++循环引用,使用方法时出错,即使在前向声明之后
- 我的堆栈使用链表时出错.无法打印数字循环.(C++)
- 尝试使用cout在循环中打印数组时出错
- 与矢量大小一起使用时,for 循环中出错
- 嵌套 for 循环的 openmp 出错
- 在非常小的循环中出错
- cin.Getline在for循环中出错