能否在for循环的增量语句中添加特定条件控制变量递增?
如何在for循环中实现「满足条件才递增变量」的逻辑
当然可以实现你想要的需求,但你最初写的i++ && (a specific condition)语法并不能达到目的——因为i++会先执行,不管后面的条件真假,i已经被加1了,这和你「条件不满足时暂停i递增」的想法刚好相反。
下面给你两种可行的实现方式,选哪种取决于你更看重代码的简洁性还是可读性:
方法1:把条件逻辑放在for循环的增量部分
你可以利用三元运算符,直接在for循环的第三个部分(增量区)写条件判断,决定是否让i递增:
// 假设another_variable是你用来控制i递增的变量 for (int i = 0; i < 9; i = (another_variable < 9) ? i + 1 : i) { // 这里写你每次循环要执行的操作 // 比如可以修改another_variable的值,改变后续的递增逻辑 printf("当前i的值:%d\n", i); }
这个写法的逻辑是:每次循环结束后,会执行增量区的代码——如果another_variable < 9为真,i就加1;否则i保持当前值,循环继续执行,直到i >=9才会退出。
方法2:把增量逻辑放在循环体末尾(更推荐)
很多开发者会更倾向于这种写法,因为逻辑更直观,可读性更强,别人看代码一眼就能明白什么时候i会递增:
for (int i = 0; i < 9; ) { // 增量区留空,把逻辑移到循环体内 // 先执行你的循环操作 printf("当前i的值:%d\n", i); // 再判断是否递增i if (another_variable < 9) { i++; } }
如果你觉得for循环留空增量区有点奇怪,换成while循环写法也完全一样:
int i = 0; while (i < 9) { // 循环操作 printf("当前i的值:%d\n", i); // 条件递增 if (another_variable < 9) { i++; } }
小提醒
不管用哪种方法,都要确保循环里有机会让another_variable的状态发生变化,否则可能会陷入真正的无限循环哦!比如你可以在循环操作里修改another_variable的值,让它最终满足>=9的条件,让i继续递增直到退出循环。
内容的提问来源于stack exchange,提问作者Minixav55
相关产品推荐
相关产品推荐

