2014-10-01 86 views
0
#include <stdio.h> 
#include <stdlib.h> 

void main() 
{ 
    int a[5] = {5,1,15,20,25}; 
    int i,j,m; 

    i = ++a[1]; 
    j = a[1]++; 
    m = a[i++]; 

    printf("%d %d %d ",i,j,m); 
} 

上述程序的輸出是:增量運營商使用C

3 2 15,

我只是想知道爲什麼嗎?我在理解增量運算符時遇到了麻煩。

+0

使用增量運營商的陳述中的printf ...它會幫助你理解...... – 2014-10-01 02:59:35

+0

人們看到'++'並立即想到「未定義的行爲」。 – 2014-10-01 03:05:16

回答

2

例如,a++意味着第一返回a,然後添加到1a,而++a指首先添加1a,然後返回a

所以

i = ++a[1]; 
j = a[1]++; 
m = a[i++]; 

等於

//i = ++a[1]; 
a[1] = a[1] + 1;//a[1] = 2 
i = a[1];//i = 2 
//j = a[1]++; 
j = a[1];//j = 2 
a[1] = a[1] + 1;//a[1] = 3 
//m = a[i++]; 
m = a[i];//m = a[2] = 15 
i = i + 1;//i = 3 

所以最後,I = 3,J = 2,M = 15。