C++グローバル変数値が変更されました
2017年9月9日夜、PAT甲級1103 Integer Factorization(30)の問題をしている間に問題に遭遇し、テストポイント5はいつも通れない.その後、10日の夜に繰り返しテストしたところ、グローバル変数の1つの値が関数を実行するのに莫名に変更されたことが分かった.
グローバル変数の変更を検証するために、テストのためにコードの一部を書きました.以下のようにします.
実行結果:
明らかに変更されています.しかし5行目のコードを
に改心
実行結果:
コード環境は:物理機:VM仮想機オペレーティングシステム:Win 7 64ビットIDE:VS 2010はまだ原因を知らないが、後で探究し、自分に警告するために記録するだけだ.
グローバル変数の変更を検証するために、テストのためにコードの一部を書きました.以下のようにします.
#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はまだ原因を知らないが、後で探究し、自分に警告するために記録するだけだ.