(1) 使用变量要先定义,后使用,一般都能做到,但经常犯的错误是“没有对变量初始化,就使用它”,此时常会出现警告warning,但不影响运行,但可能会造成结果不是预期想得到的。所以要养成对变量要先定义,再初始化,然后再使用的好习惯。
以下是错误案例
#include <iostream>
using namespace std;
int main()
{
int a,b; //局部自动变量
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
return 0;
}
出现警告
运行结果
修改后
#include <iostream>
using namespace std;
int main()
{
int a,b; //局部自动变量
a=1; //对a进行初始化赋值
b=2; //对b进行初始化赋值
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
return 0;
}
运行结果
以上情况是针对与局部自动变量来说的。
以下情况是正对非局部自动变量来说。
(2)局部静态变量和外部变量(全局变量)如果没有在定义时赋初值,其初始值为0。
// 局部静态变量
#include <iostream>
using namespace std;
int main()
{
static int a,b; //局部静态变量
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
return 0;
}
// 全局变量
#include <iostream>
using namespace std;
int a,b; //全局变量
int main()
{
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
return 0;
}
虽然定义局部静态变量和全局变量时都没有对其进行初始化赋值就使用,编译时也没出现任何警告,原因就在于对于这两种类型的变量如果没有对其赋值就使用,其默认值为0。
两个例子的运行结果都如下