有人告诉我,while循环比for循环更有效.(c/c ++)这似乎很合理,但我想找到一种证明或反驳它的方法.
我尝试使用类似的代码片段进行三次测试.每个包含Nothing但具有相同输出的for或while循环:
我应该尝试过其他任何东西,还是任何人都可以通过某种方式确认?
所有循环都遵循相同的模板:
{
// Initialize
LOOP:
if(!(/* Condition */) ) {
goto END
}
// Loop body
// Loop increment/decrement
goto LOOP
}
END:
Run Code Online (Sandbox Code Playgroud)
因此这两个循环是相同的:
// A
for(int i=0; i<10; i++) {
// Do stuff
}
// B
int i=0;
while(i < 10) {
// Do stuff
i++;
}
// Or even
int i=0;
while(true) {
if(!(i < 10) ) {
break;
}
// Do stuff
i++;
}
Run Code Online (Sandbox Code Playgroud)
两者都转换为类似的内容:
{
int i=0;
LOOP:
if(!(i < 10) ) {
goto END
}
// Do stuff
i++;
goto LOOP
}
END:
Run Code Online (Sandbox Code Playgroud)
未使用/无法访问的代码将从最终的可执行文件/库中删除。
Do-while 循环跳过第一个条件检查并留给读者作为练习。:)