Her*_*che 4 c c++ break while-loop do-while
我比较了gcc汇编程序的输出
do{
//some code
}while(0);
Run Code Online (Sandbox Code Playgroud)
同
do{
//some code
break;
}while(1);
Run Code Online (Sandbox Code Playgroud)
输出是相等的,有或没有优化,但..
一直都是这样吗?
没有实验可以证明理论,它们只能证明它们是错误的
Gia*_*nni 18
有一点点差异:
do {
// code
if ( condition )
continue;
// code
break;
} while(1);
Run Code Online (Sandbox Code Playgroud)
当condition
为true 时将重新启动循环,而在} while(0);
版本中,continue
将等效于break
.
如果不continue
存在,则它们应该生成完全相同的代码.
表格不相同.这是一个无限循环:
do {
continue;
break;
} while (1);
Run Code Online (Sandbox Code Playgroud)
这不是:
do {
continue;
} while (0);
Run Code Online (Sandbox Code Playgroud)