2011-09-29 46 views

回答

8
int a[] = {1, 2, 3, 4, 5}; 
int i = 1; 
a[i]++; 
printf("%d %d\n", i, a[i]); 
a[i++]; 
printf("%d %d\n", i, a[i]); 

輸出

1 3 
2 3 

a[i]++在遞增索引i的元件,它不增加i。並且a[i++]增量爲i,而不是索引i上的元素。

+0

我知道了。感謝大家的幫助 – samprat

+0

這個答案缺少的是'a [i] ++'和'a [i ++]'的評估。 –

+0

@大衛Heffernan,正確。你的回答解釋得更好。 – taskinoor

11
  • array[i]++遞增值array[i]。表達式在遞增之前評估爲array[i]
  • array[i++]遞增i的值。表達式評估爲array[i],之後i已增加。

舉例說明。

假設array包含三個整數,0,1,2,和i等於1

  • array[i]++改變array[1]到2,計算結果爲1和葉i等於1
  • array[i++]不修改array,計算結果爲1,並改變到i 2.

後綴運營商,其中Y你在這裏使用,在遞增之前評估表達式的值。

4

array[i]++表示(*(array+i))++。 - >增加價值。

array[i++]表示*(array + (i++))。 - >增加索引。

1

這裏Array [i] ++遞增元素數組[i] 的值,但數組[i ++]遞增影響或改變數組元素指示的i值,即它表示數組元素的nxt元素array [i]之後的數組。

0

這裏array [i ++]遞增索引號。
相反,array [i] ++遞增i索引的數據值。

代碼段:

#include <iostream> 
using namespace std; 


int main() 
{ 
    int array[] = {5, 2, 9, 7, 15}; 

    int i = 0; 


    array[i]++; 
    printf("%d %d\n", i, array[i]); 

    array[i]++; 
    printf("%d %d\n", i, array[i]); 


    array[i++]; 
    printf("%d %d\n", i, array[i]); 


    array[i++]; 
    printf("%d %d\n", i, array[i]); 


    return 0; 
}