C++全局变量值被修改


2017年9月9日晚,在做PAT甲级1103 Integer Factorization (30)一题时碰到一个问题,测试点5总是过不去。后来经过10号晚上反复测试发现其中一个全局变量的值在执行某个函数是被莫名修改了。

为验证全局变量的改动情况,写了一部分代码用于测试,如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#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<<sumOfAns<<endl;
    system("pause");
}

执行结果为:

1
1234

很明显是已经被改动了。 然而倘若将第5行代码

1
int sumOfAns = 0;

改为

1
int sumOfAns = 1; //准确的说是非0

执行结果为:

1
1

代码环境为: 物理机:VM虚拟机 操作系统:Win7 64位 IDE:VS2010 尚不知原因,待日后探究,仅记录之以警示自己。



发表评论:

评论列表: