昨天学习了八皇后问题,我就想:能不能写一个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,若需要对全局变量进行关联,则只能在主函数中通过表达式进行设置。