次の 2 つのコードの結果が異なるのはなぜですか? 最初のものはゼロを出力しますが、2番目のものは期待どおりにランダムカウントを出力します。gcc 4.6.3 を使用
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 }