这两者在效率方面是否有区别?第二个更优化了吗?我先编译了第一段代码,然后反编译了第二段代码。
for (i = 0; i < n; ++i) {
if (a[i] == x) {
printf("%d", a[i]);
return 0;
}
}
return 1;
i = 0;
while (1) {
if (n <= i)
return 1;
if (a[i] == x)
break;
i = i + 1;
}
printf("%d", a[i]);
return 0;
答案 0 :(得分:1)
两个代码片段执行相同的操作。主要的区别是第一个是可读且易于理解的,第二个是模糊的,需要花一些时间才能弄清楚它确实与第一个等同,确实使很多评论证实这一点令人困惑。
在这些情况下,从优化角度考虑是徒劳的,无论如何编译器都可能会为两者生成等效的代码。
结论很明确: