如何正确将C++中的do-while循环转换为符合语法规范的for循环
错误原因分析
- 你写的for循环不符合C++语法规范:标准
for循环的括号内仅支持三个用分号分隔的表达式,分别对应「变量初始化」「循环继续条件」「每轮循环结束后的变量更新」,你额外把奇偶判断塞到了for的括号里,直接触发语法错误 - 你删除了原do-while循环内的if分支逻辑,原逻辑是奇偶判断后输出不同内容,你修改后的代码会每次循环同时输出两行内容,和原逻辑完全不匹配
- 原do-while循环的循环继续条件是
i <= 20,这个条件应该放在for循环的第二个表达式位置,你之前放错了位置
正确转换后的代码
原do-while逻辑是先执行循环体再判断终止条件,在当前场景下i初始值为1,第一次执行必然满足i<=20的要求,所以直接按标准for转换即可,执行结果和原代码完全一致:
for (int i = 1; i <= 20; i += 2) { if (i % 2 == 0) cout << "Hallo\n"; else cout << "Apa Khabar\n"; }
内容的提问来源于stack exchange,提问作者Darin Hinze
相关产品推荐
相关产品推荐

