c++ - 使用无符号循环变量进行反向迭代

标签 c++ for-loop

我一直在与同事讨论 size_t 的使用。出现的一个问题是循环减少循环变量直到它达到零。

考虑以下代码:

for (size_t i = n-1; i >= 0; --i) { ... }

由于无符号整数环绕,这会导致无限循环。在这种情况下你会怎么做?编写上面的代码似乎很容易,却没有意识到自己犯了一个错误。

我们团队的两个建议是使用以下样式之一:

for (size_t i = n-1; i != -1 ; --i) { ... }

for (size_t i = n; i-- > 0 ; ) { ... }

但我确实想知道还有哪些其他选择...

最佳答案

我个人越来越喜欢:

for (size_t i = n; i --> 0 ;)

它有 a) 没有有趣的 -1,b) 条件检查是助记符,c) 它以合适的笑脸结尾。

关于c++ - 使用无符号循环变量进行反向迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3623263/

相关文章:

c++ - vtable中虚拟函数的地址

c++ - 在 C++ 中存储表的最佳方法是什么

c++ - char* const args[] 定义

c - C 中 3D 循环的宏

c++ - 为什么派生类必须重新定义重写的基类方法

c++ - 使用 ofstream 时,我应该将什么作为 curl_easy_setopt 中的第三个参数传递?

c - for 循环中的线程

java - 循环不递增

JavaScript for 数组中字符串的循环

python - 如何检查列表中的所有整数是否连续?