【发布时间】:2017-03-18 21:31:22
【问题描述】:
假设我想遍历for 循环中的所有整数。为了便于讨论,假设我为每个整数调用了一些未知函数f(unsigned x):
for (unsigned i = 0; i < UINT_MAX; i++) {
f(i);
}
当然,上面的方法无法遍历所有个整数,因为它错过了一个:UINT_MAX。将条件更改为i <= UINT_MAX 只会导致无限循环,因为这是重言式。
您可以使用 do-while 循环来完成此操作,但您会失去 for 语法的所有细节。
我可以把我的蛋糕(for 循环)也吃掉吗(遍历所有整数)?
【问题讨论】:
-
如何在
do-while循环中完成? -
没有“简单”的解决方案。使用“do-while”循环或等效循环。
-
@yano 喜欢
unsigned i=0; do { f(i); } while (++i != 0) -
啊,,,,,好!
-
... 是的,除了你失去了
for循环的很多好处 - 一个大的是将i的范围限定为循环的主体,而更小的循环是更紧凑的初始化、终止检查、增量语法。