C++グローバル変数値が変更されました

1639 ワード

2017年9月9日夜、PAT甲級1103 Integer Factorization(30)の問題をしている間に問題に遭遇し、テストポイント5はいつも通れない.その後、10日の夜に繰り返しテストしたところ、グローバル変数の1つの値が関数を実行するのに莫名に変更されたことが分かった.
グローバル変数の変更を検証するために、テストのためにコードの一部を書きました.以下のようにします.
#include "iostream"
using namespace std;

int factor[20 + 1];
int sumOfAns = 0;

int main(){
    int i = 1;
    factor[1] = 1;
    while(i <= 20){
        i ++;
        factor[i] = 1234;
    }
    //sumOfAns = 0;
    cout<"pause");
}

実行結果:
1234

明らかに変更されています.しかし5行目のコードを
int sumOfAns = 0;

に改心
int sumOfAns = 1; // 0

実行結果:
1

コード環境は:物理機:VM仮想機オペレーティングシステム:Win 7 64ビットIDE:VS 2010はまだ原因を知らないが、後で探究し、自分に警告するために記録するだけだ.