本文讨论++i和i++的区别。

1其实解释得非常清楚了:

++i

int i = 3;
int preIncrementResult = ++i;
Assert( preIncrementResult == 4 );
Assert( i == 4 );

i++

int i = 3;
int postIncrementResult = i++;
Assert( postIncrementtResult == 3 );
Assert( i == 4 );

++ii++在修改了i后,都是有返回值的,相当于一个函数,区别在于返回的是修改之前还是之后的值。

  • ++i是返回修改之后
  • i++返回修改之前

如果这样,考虑

for (int i = 0; i < count; ++i) {...}

for (int i = 0; i < count; i++) {...}

其实是等价的,因为两者都没有用到返回的值。

而只有1

for (int i = 0, a = 0; i < count; a = ++i) {...}

for (int i = 0, a = 0; i < count; a = i++) {...}

每次循环的a值才是不同的。