如何在C语言中仅使用goto语句实现等效的do-while循环
C语言用goto实现等效do-while循环的方案
核心逻辑说明
原生do-while循环的执行规则是:先无条件执行1次循环体代码,再判断循环条件,条件为真则重复执行循环体,条件为假则直接退出循环,用goto实现时需要严格对齐这个执行顺序,不能增加额外的前置条件判断。
等效实现代码
// 循环体起始标签 loop_start: // Some code (和原do-while循环内的代码完全一致) // 循环条件判断逻辑,和原do-while的while()内的条件完全一致 if (/* 原while括号内的条件表达式 */) { goto loop_start; } // 循环结束后的后续代码
等效性验证
- 首次执行时会直接进入循环体代码,和do-while的「先执行一次循环体」逻辑完全一致
- 循环体执行完成后才判断条件,条件成立时跳转回循环体开头重复执行,和do-while的判断时机、跳转逻辑完全匹配
- 没有引入任何额外的执行分支,运行语义和原生do-while无差异
实际运行示例
比如原do-while循环代码:
#include <stdio.h> int main() { int count = 0; do { printf("count = %d\n", count); count++; } while (count < 3); return 0; }
等效的goto实现代码:
#include <stdio.h> int main() { int count = 0; loop_start: printf("count = %d\n", count); count++; if (count < 3) { goto loop_start; } return 0; }
两段代码的运行输出完全一致,均为:
count = 0 count = 1 count = 2
内容的提问来源于stack exchange,提问作者Jbb
相关产品推荐
相关产品推荐

