关于C++:C中的两个循环之间有什么区别?

What is the difference between these two for loops in C?

本问题已经有最佳答案,请猛点这里访问。
1
2
int i;
for(i = n; i --> 0;)

1
for(i = n; i > 0; --i)

它们产生了不同的结果。


对于第一个,在执行循环体之前,i被递减。在执行循环体之后,第二个循环体会减少i


差异是实际减少i的步骤,它会影响循环体内部的i值。

第二个传统版本在执行循环体之后,在再次检查条件之前,递减i。因此,在为i == 1执行循环体后,i达到0。循环i为0后,再次检查条件。

在执行循环体之前,第一个版本会减少i,这是正在检查的条件的一部分。在这里,循环体第一次与i == n - 1一起运行,最后一次与i == 0一起运行。然后,将i递减,并将其以前的值与0进行比较。循环退出,后面的i是-1。

在传统的版本中,循环体总是看到与检查条件部分相同的值。