在 C 语言中,没有直接的 repeat...until 循环结构。repeat...until 是 Pascal 语言中的一个循环,它的特点是先执行循环体,然后判断条件,如果条件为真,则退出循环(即“直到条件成立时才停止”)。

(图片来源网络,侵删)
我们可以通过 C 语言中的其他循环结构(如 do-while)轻松实现 repeat...until 的逻辑。
do-while 循环:最接近 repeat...until 的替代方案
C 语言的 do-while 循环与 repeat...until 的行为几乎完全一致:
- 先执行循环体,然后检查条件。
- 如果条件为真,则继续循环(与
repeat...until的“直到条件成立才停止”逻辑相反)。 - 如果条件为假,则退出循环。
语法:
do {
// 循环体(至少执行一次)
} while (condition); // 注意:分号不能少!
示例:
#include <stdio.h>
int main() {
int i = 1;
// 类似 repeat...until 的逻辑
do {
printf("i = %d\n", i);
i++;
} while (i <= 5); // 当 i > 5 时退出循环
return 0;
}
输出:
i = 1
i = 2
i = 3
i = 4
i = 5
while 循环(不直接等效)
while 循环是先判断条件,再执行循环体,因此如果初始条件为假,循环体一次都不会执行,这与 repeat...until 的“至少执行一次”逻辑不同。

(图片来源网络,侵删)
示例:
int i = 10;
while (i <= 5) { // 条件为假,循环体不执行
printf("This won't print\n");
}
for 循环(不直接等效)
for 循环也是先判断条件,因此同样无法直接实现 repeat...until 的逻辑。
使用 goto 模拟 repeat...until(不推荐)
虽然可以用 goto 模拟,但这种方式会降低代码可读性,通常不推荐使用。
示例:
#include <stdio.h>
int main() {
int i = 1;
repeat:
printf("i = %d\n", i);
i++;
if (i <= 5) {
goto repeat;
}
return 0;
}
| 循环类型 | 执行顺序 | 是否至少执行一次 | 是否等效 repeat...until |
|---|---|---|---|
do-while |
先执行,后判断 | 是 | 是 |
while |
先判断,后执行 | 否 | 否 |
for |
先判断,后执行 | 否 | 否 |
goto |
通过标签跳转 | 是 | 是(但不推荐) |
推荐做法:直接使用 do-while 循环来实现 repeat...until 的逻辑。

(图片来源网络,侵删)
