我一直在与同事讨论 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/