2016-02-17 50 views
-2
#include <iostream> 
using namespace std; 

int main() 
{ 
    int a[4] = {7,9,3,4}; 
    for (int i = 1; i < 4; i++) { 
     a[0]+=a[i]+1; 
    } 
    cout << a[0]; 
} 

我通過編譯器運行此代碼,答案竟然是26.現在我試圖瞭解如何到達這個答案。需要這兩個int數組的總和的細分

我很確定for循環初始化是從計數器變量1開始的,條件是i < 4它最初是真實的,並且循環將繼續以1,2,3的輸出遞增i直到i = 4並且條件是錯誤的。

現在我不明白的是接下來會發生什麼。我是否將索引a [0]是7並將其添加到「a [i] +1」?如果是的話,「a [i] +1」的價值是什麼?

+2

這正是是預期的輸出。 7 + 9 + 3 + 4 + ** 3 ** => 26. –

+0

你確實明白了'a [0] + = a [i] + 1;'用i = {1,2,3} ?它不會發生*「在過程中的下一個」*。它是循環的一部分。 – LogicStuff

+0

「兩個int數組的總和」...其中是第二個數組?我只能看到一個叫'a []'的。 –

回答

2

它做3個步驟:

a[0] += a[1] + 1 
a[0] += a[2] + 1 
a[0] += a[3] + 1 

即:

a[0] = 7 + 9 + 1 = 17 
a[0] = 17 + 3 + 1 = 21 
a[0] = 21 + 4 + 1 = 26 

它給數組加3的總和,因爲在計算三個步驟。

+0

這個答案很完美!謝謝! – StacksonStacks

2

在該循環

for (int i = 1; i < 4; i++) { 
a[0]+=a[i]+1; 
} 

a[0]累積的分別根據循環變量i在循環的每次迭代的變化(包括itslef)a[1] + 1a[2] + 1,和a[3] + 1值。

由於a[0]初始值是7

int a[4] = {7,9,3,4}; 

那麼你將有

7 + (9 + 1) = 17 
17 + (3 + 1) = 21 
21 + (4 + 1) = 26