数组内的增量运算符

Lok*_*son 7 c c++ arrays pre-increment post-increment

我有一个C程序,它是使用数组的队列操作。在该程序中,它们在数组内增加一个变量。我不明白那是怎么回事。因此,请解释以下操作:

array[++i];
array[i++];
Run Code Online (Sandbox Code Playgroud)

Log*_*uff 11

请解释这些操作。

  1. array[++i];-首先递增i,然后在递增索引处给您元素

    相当于:

    ++i; // or i++
    array[i];
    
    Run Code Online (Sandbox Code Playgroud)
  2. array[i++];-也首先递增i,但后缀在递增之前operator++返回i的值

    相当于:

    array[i];
    ++i; // or i++
    
    Run Code Online (Sandbox Code Playgroud)

它们在数组内部增加一个变量。

不,他们没有。您可以说它们i在对数组下标运算符的调用中增加。


Ste*_*enG 5

评估之前++i增量。i

i++inrementsi 评估它。

如果i=1然后array[++i]设置i=2然后获取array[2].

If i=1then array[i++]fetches array[1]then set i=2.

post- 和 pre- 操作发生它们所涉及的表达式 is 评估之后之前

我通常不鼓励在表达式中使用 post 和 pre 增量运算符。它们最多会导致混乱,最坏的情况是会导致错误。

考虑什么 x = array[++i] + array[i--] ;应该是。看看混淆程序员(或必须修复您的代码的可怜的魔鬼?:-))是多么容易。

post 和 pre 递增和递减操作也会在宏中产生问题,因为您最终可能会多次复制操作,尤其是对于宏。

它更简单,更易于维护代码,以避免表达式中的 post 和 pre 增量,IMO。