C++自学第六天--常量的定义
1、C++常量命名方式
请注意,把常量定义为大写字母形式,是一个很好的编程实践。
2、定义常量
在 C++ 中,有两种简单的定义常量的方式:
2.1、使用 #define 预处理器。
2.2、使用 const 关键字。
2.1、define 预处理器
下面是使用 #define 预处理器定义常量的形式:
#define identifier value
具体请看下面的实例:
#include <iostream>
using namespace std;
#define LENGTH 10
#define WIDTH 5
#define NEWLINE '\n'
int main()
{
int area;
area = LENGTH * WIDTH;
cout << area; //输出结果为:50
cout << NEWLINE;
return 0;
}
注意:
预处理 #define 变量定义值以后,不能用分号,否则就会计算错误,但是程序不会报错。
#include <iostream>
using namespace std;
#define age0 12
#define age1 10
#define age2 12;
#define age3 10;
int main()
{
int dd;
dd = age0 + age1;
cout << "值=" << dd << endl; //值=22
dd = age2 + age3;
cout << "值=" << dd << endl; //值=12
return 0;
}
2.2、const 关键字
您可以使用 const 前缀声明指定类型的常量,如下所示:
const type variable = value;
具体请看下面的实例:
#include <iostream>
using namespace std;
int main()
{
const int LENGTH = 10;
const int WIDTH = 5;
const char NEWLINE = '\n';
int area;
area = LENGTH * WIDTH;
cout << area;//输出结果为:50
cout << NEWLINE;
return 0;
}
3、宏定义 #define 和常量 const 的区别
3.1、类型不同
就定义常量说的话,
const 定义的常数是变量 也带类型,
#define 定义的只是个常数 不带类型。
3.2、起作用阶段不同
就起作用的阶段而言,#宏定义是一个"编译时"概念,在编译的预处理阶段起作用
而 const常量是一个"运行时"概念,const 是在编译、运行的时候起作用,在程序运行阶段使用,类似于一个只读行数据
3.3、存储方式不同
宏定义是直接替换,不会分配内存,存储与程序的代码段中,占用代码段空间
const常量需要进行内存分配,存储与程序的数据段中,占用数据段空间
#define PI 3.14 //预处理后 占用代码段空间
const float PI=3.14; // 本质上还是一个 float变量,占用数据段空间
3.4、能否进行代码调试
从代码调试的方便程度而言,
#define 是不能进行调试的,因为在预编译阶段就已经替换掉了
而const 常量可以进行调试的,
3.5、定义域不同
void f1 ()
{
#define N 12
const int n 12;
}
void f2 ()
{
cout<<N <<endl; //正确,N已经定义过,不受定义域限制
cout<<n <<endl; //错误,n定义域只在f1函数中
}
3.6、定义后能否取消
宏定义可以通过#undef来使之前的宏定义失效
const常量定义后将在定义域内永久有效
void f1()
{
#define N 12
const int n = 12;
#undef N //取消宏定义后,即使在f1函数中,N也无效了
#define N 21//取消后可以重新定义
}
3.7、是否可以做函数参数
宏定义不能作为参数传递给函数
const常量可以在函数的参数列表中出现
大爱菜鸟教程这个网站,爱该网站的官方教程,也爱各前辈和大佬留下的学习笔记
菜鸟教程
博客园 狸猫酱 宏定义(#define)和常量(const)的区别
大家好,我是[爱做梦的子浩](https://blog.csdn.net/weixin_43124279),我是东北大学大数据实验班大三的小菜鸡,非常向往优秀,羡慕优秀的人,已拿两个暑假offer,欢迎大家找我进行交流😂😂😂
这是我的博客地址:[子浩的博客https://blog.csdn.net/weixin_43124279]
——
版权声明:本文为CSDN博主「爱做梦的子浩」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。