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

xiaoxiao2021-02-28  71

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

转载请注明原文地址: https://www.6miu.com/read-77778.html

最新回复(0)