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