【发布时间】:2019-05-03 19:56:58
【问题描述】:
这两者在效率方面有什么区别吗?第二个更优化吗?我编译了第一个代码,然后我反编译了它,得到了第二个代码。
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;
【问题讨论】:
-
他们根本不做同样的事情。
-
您是否错过了第二行的
i++行? (顺便问一下,用的是哪个反编译器?) -
@chqrlie 啊,现在我明白了 :D 条件颠倒了。太可怕了。
-
@AnttiHaapala:最初的版本确实不同......没有
i = i + 1
标签: c optimization compilation decompiling