2014-11-23 3 views
0

Значение i равно 2, когда я комментирую заявления 2 и 3, но когда я этого не делаю, i становится 3. Почему?Каков процесс этого выхода?

#include <stdio.h> 
int main() 
{ 
    int a[5]={5,1,15,20,25}; 
    int i,j,k=1,m; 
    i=++a[1]; //Statement 1    
    j=a[1]++; //Statement 2 
    m=a[i++]; //Statement 3 

    printf("%d %d %d",i,j,m); 
    return 0; 
} 
+2

Потому что с Заявлением 2 + 3, подмигнули другой код? Что вы не понимаете? – deviantfan

+4

Потому что оператор 3 увеличивает 'i'. –

+3

Попробуйте объяснить, почему вы ожидаете, чего вы ожидаете –

ответ

0

В Заявлении 3, ваш код приращением значение i:

m = a[i++]; 

Это легче заметить это вы разбить его как следующие две строки:

m = a[i]; 
i++; 

Примечание: порядок важен! Поскольку это post-increment (i++, а не ++i), сначала используется значение i, а затем увеличивается.

+0

Понял, урок, который я узнал, это то, что я сначала использую, а затем увеличиваю. –

+0

в j = a [1] ++, сначала назначается [1], а затем увеличивается или сначала увеличивается, а затем назначается –

+0

'j = a [1] ++;' такое же, как 'j = a [ 1]; ', за которым следует' a [1] ++; '. –

0

m=a[i++] вызывает i быть увеличивается на единицу. Это часть i++, которая увеличивает i.

+0

Я думаю, что я получил его, но тогда выход m должен быть 20 вправо, но на выходе отображается 15 или он будет увеличиваться позже, пожалуйста, объясните процесс? –

+0

Да, он увеличивается в дальнейшем. 'i ++' использует 'i', затем увеличивается. '++ i' увеличивается, а затем использует' i'. –

0

после statement 1: i = a[1] + 1 означает, что вы добавляете 1 к a[1] затем хранить это значение в я

i = 2 ; a[1] = 2' 

после statement 2: j = a[1]++ означает, что вы добавляете 1 к a[1] т.е. 2 + 1

j = 2; a[1] = 3; 

после statement 3: m = a[i + 1] что означает вы добавляете 1 к значению индекса i уже равно 2, поэтому вы делаете m = a[2+1], что составляет 15, но так как у вас есть i++, что операция еще преформы надстройки к i делая i =4

m = 15; i = 4; thus a[i] = 20 
Смежные вопросы