您的位置:首页 > 其它

Debug日志:一个关于“全局变量”的常见错误

2017-07-11 19:14 363 查看
昨天学习了八皇后问题,我就想:能不能写一个N皇后问题的程序呢?首先要定义一个全局变量N,然后其他变量根据N做出相应调整。结果却调了一晚上都没调出来。今天下午,我设计了几行测试代码,把与N相关的几个变量的最终值输出,结果令我大吃一惊:那几个变量根本就没有随N的变化而变化。为了验证我的猜想,我又单独设计了如下测试代码:

#include <iostream>
using namespace std;

int N;
int Normalize = N + 1;

int main()
{
cout << "请输入N:";
cin >> N;
cout << "N = " << N << endl;
cout << "Normalize = " << Normalize << endl;
return 0;
}


测试结果如下:



Normalize变量居然没有随N变化!而其结果为1让我猜测定义全局变量时,N被默认为0了。于是修改测试代码如下:

#include <iostream>
using namespace std;

int N;
int Normalize = N + 3;

int main()
{
cout << "请输入N:";
cin >> N;
cout << "N = " << N << endl;
cout << "Normalize = " << Normalize << endl;
return 0;
}
测试结果:



果然验证了我的猜想!

于是再次修改测试代码:

#include <iostream>
using namespace std;

int N;
int Normalize;

int main()
{
cout << "请输入N:";
cin >> N;
Normalize = N + 1;
cout << "N = " << N << endl;
cout << "Normalize = " << Normalize << endl;
return 0;
}
这次得到了想要的结果:



结论:

1,全局变量在定义时若未被赋初值,则被默认置为0——至少我的编辑环境Devcpp是如此。

2,全局变量在定义时不能连环嵌套定义,只能赋常数值。

3,若需要对全局变量进行关联,则只能在主函数中通过表达式进行设置。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐