2015-04-01 4 views
1

У меня есть вопрос о значении j внутри этого вложенного цикла.Как значение этой переменной увеличивается за пределами этого цикла?

for (potentialSum=1; potentialSum<=m; potentialSum ++) 
    { 
     for (j=1;j<=n;j++) 
     { 
      if (potentialSum == 2) { 
       printf("j:%d in loop\n", j); 
      } 
     } 

     C[potentialSum]=(j<=n) ? j : (-1); 

     if (C[potentialSum] == -1) { 
       printf("j:%d n:%d \n", j , n); 
     } 

    } 

п = 0 и т = 25.

Так что, когда я запускаю этот цикл с вышеупомянутыми значениями п и т, я получаю выход что-то вроде этого:

j:1 in loop 
j:2 in loop 
j:3 in loop 
j:4 in loop 
j:5 in loop 
j:6 in loop 
j:7 in loop 
j:8 n:7 // Outside of loop 

Мой вопрос в том, когда/как j получите приращение до 8, если n=7?

Это происходит только тогда, когда potentialSum = 2, для полного кода нажмите here и для копии ввода нажмите here.

Спасибо за всю помощь заранее, я просто не вижу, как j идет от 7 до 8 снаружи цикла.

+1

На 'for (j = 1; j <= n; j ++)', 'j' будет увеличиваться после каждого цикла, пока' j' больше не будет '<= n', это произойдет, когда' j' станет '8 '. – Havenard

+0

@ Большое спасибо за объяснение. – Kenshin

ответ

5
for (j=1;j<=n;j++) //where n is 7 

для (деклараций; сравнение (проверка состояния), увеличение/уменьшение)

после объявления, сравниваются значение, и в конце ее инкрементация (j++)

, когда j=7 она будет проверять условие j<=n, которое верно, поэтому оно будет проходить внутри цикла. и при этом будет увеличиваться j++.
Теперь текущее значение j станет 8. В следующий раз он проверит условие j<=n, которое является ложным, поэтому оно выйдет из цикла, но j останется 8.

+0

Это прошло через мои 30 минут. Большое спасибо за великолепное объяснение. – Kenshin

+1

Добро пожаловать @ Kenshin :) – Himanshu

Смежные вопросы