在程序中,变量、常量是构成表达式的重要部分,尤其是变量,在程序中是大量使用的,所谓常量,指的是一旦初始化就无法修改的值,常量的定义中含有const 表示这个变量是一个常量,如
我们定义PI为一个常量,表示3.14
#include <iostream>
using namespace std;
int main()
{
const float PI=3.14;//定义PI值
cout << "PI="<< PI <<endl;
}
运行后的结果为:
如果我们在程序中修改PI的值为3.1415
#include <iostream>
using namespace std;
int main()
{
const float PI=3.14;//定义PI值
PI=3.1415;
cout << "PI="<< PI <<endl;
}
其实在IDE中,就会有一个红色的波浪线的提示
运行程序后
直接编译失败,提示出了错误,提示这个参数PI为只读,不允许赋值。
什么时候使用常量这个没有强制规定,但是使用常量会带来以下好处:
1.可以提高程序的可读性、代码的重用性,
2.防止变量被错误修改,从而保证程序的安全性和稳定性。
因此合理的使用常量,能够让我们的代码更加规范、易读和易于维护,所以什么时候使用常量这个根据程序开发需要进行确定。
所谓变量就是指可以改变的量,定义方式与常量类似,常量中const表示,去掉const,则就是变量,
#include <iostream>
using namespace std;
int main()
{
const float PI=3.14;//定义PI值
cout << "pi="<< PI <<endl;
int radius=10;
cout << "Area=PI(r*r)="<< (PI*radius*radius) << endl;
}
上面,我们定义了一个变量radius,并且初始化值为10,计算出圆的面积,如果我们计算完后,再改变半径的值为20,看看程序执行结果
#include <iostream>
using namespace std;
int main()
{
const float PI=3.14;//定义PI值
cout << "pi="<< PI <<endl;
int radius=10;
cout << "Radius=" << radius << endl;
cout << "Area=PI(r*r)="<< (PI*radius*radius) << endl;
radius=20;
cout << "Radius=" << radius << endl;
cout << "Area=PI(r*r)="<< (PI*radius*radius) << endl;
}
执行结果:
可以看到变量的值被改变后程序可以正常执行,并且没有报错。
常量和变量在定义,初始化,赋值等操作时,都会涉及到内存的使用和变化,这里不讲解了,后面如果涉及到了再讲解。
常量和变量的使用范围,所谓作用范围就是在程序开发中常用的作用域,变量或常量在自己的作用域内是有效的,超过了自己的作用域,就没有效了。
看下面的程序:
#include <iostream>
using namespace std;
int area()
{
int radius=30;
cout << "Radius=" << radius <<endl;
return 0;
}
int main()
{
const float PI=3.14;//定义PI值
cout << "pi="<< PI <<endl;
int radius=10;
cout << "Radius=" << radius << endl;
cout << "Area=PI(r*r)="<< (PI*radius*radius) << endl;
area();
cout << "Radius=" << radius << endl;
cout << "Area=PI(r*r)="<< (PI*radius*radius) << endl;
}
在函数中定义的每个变量的作用范围只适用于当前函数,在函数外不能使用,定义是无效的,
#include <iostream>
using namespace std;
int area()
{
int radius=30;
cout << "Radius=" << radius <<endl;
return 0;
}
int main()
{
const float PI=3.14;//定义PI值
cout << "pi="<< PI <<endl;
radius=10;
cout << "Radius=" << radius << endl;
cout << "Area=PI(r*r)="<< (PI*radius*radius) << endl;
area();
radius=20;
cout << "Radius=" << radius << endl;
cout << "Area=PI(r*r)="<< (PI*radius*radius) << endl;
}
在area中定义了变量radius,但是在main函数中无法使用,因为radius,则超出了使用范围。因此无效。但是,如果我们在函数外定义一个变量,将area中的变量取消
#include <iostream>
using namespace std;
int radius = 0;
int area() {
radius = 30;
cout << "Radius=" << radius << endl;
return 0;
}
int main() {
const float PI = 3.14; //定义PI值
cout << "pi=" << PI << endl;
radius = 10;
cout << "Radius=" << radius << endl;
cout << "Area=PI(r*r)=" << (PI * radius * radius) << endl;
area();
cout << "Radius=" << radius << endl;
cout << "Area=PI(r*r)=" << (PI * radius * radius) << endl;
}
看运行结果
可以看到变量值发生了变化,那么这个变量的作用域就不再限于函数,但是如果我们在函数中再定义一个变量,
#include <iostream>
using namespace std;
int radius = 0;
int area() {
int radius = 30;
cout << "Radius=" << radius << endl;
return 0;
}
int main() {
const float PI = 3.14; //定义PI值
cout << "pi=" << PI << endl;
radius = 10;
cout << "Radius=" << radius << endl;
cout << "Area=PI(r*r)=" << (PI * radius * radius) << endl;
area();
cout << "Radius=" << radius << endl;
cout << "Area=PI(r*r)=" << (PI * radius * radius) << endl;
}
比如在area函数中再定义一个radius变量,那么执行
可以看到在main函数中的变量与area又出现了变化,area改变radius的值后,main中的值并没有变化,那么这是因为area中重新定义了变量,这个变量的作用范围不再是全局了,仅限于这个函数内部有效,我们变量是哪个变量有效,看哪个变量的定义离使用最近,离的最近的,才是对自己生效的那个变量,离的远的就不会生效了。常量与这个类似,只是常量一般我们要定义为全局常量,局部常量,定义意义不大。以后在使用的时候也尽量使用全局,如果用全局就无所谓范围的限制了。