2013-02-16 100 views
1

爲什麼以下兩個代碼給出不同的結果? 第一個打印零,而第二個打印隨機計數如預期。 使用gcc 4.6.3作爲數組索引的C++傳遞函數不起作用。

8 int foo(){ 
    9 return rand() % 2; 
10 } 
11 
12 int main() 
13 { 
14 int ar[2] = {0};    
15 for (int i = 0; i < 20; i++) { 
16 // int tmp = foo(); 
17 // ar[tmp]++; 
18  ar[foo()]; 
19 } 
20 
21 for (int i = 0; i < 2; i++) 
22  cout << i << " : " << ar[i] << endl; 
23 } 


8 int foo(){ 
9 return rand() % 2; 
10 } 
11 
12 int main() 
13 { 
14 int ar[2] = {0};    
15 for (int i = 0; i < 20; i++) { 
16  int tmp = foo(); 
17  ar[tmp]++; 
18  // ar[foo()]; 
19 } 
20 
21 for (int i = 0; i < 2; i++) 
22  cout << i << " : " << ar[i] << endl; 
23 } 
+0

你打算用'ar [1]'初始化什麼值? – vonbrand 2013-02-16 20:33:34

回答

3

因爲你實際上並沒有增加數組中的值:

ar[foo()]++; 
//  ^
// You forgot this 

這意味着所有的元素保持不變,你得到0作爲你的輸出。