C程序设计--常量(宏定义和const关键字定义)

说明:(个人总结,有不对之处,还望指正)

常量

  • 常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。

  • 常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。

  • 常量就像是常规的变量,只不过常量的值在定义后不能进行修改。

常用的一些常量表示,如:

名称含义
PI3.14159 265表示 π π π 的值为常量
e2.71828自然底数 e e e 的值
N一个自然数可以用来定义数组长度
exp1e-6一般表示循环的终止条件 10 10 10 − 6 -6 6

在 C语言 中,有两种简单的定义常量的方式:

  1. 使用 #define 预处理器。
  2. 使用 const 关键字。

1. 使用关键字( const )

  • 声明格式:

const type variable = value;

  • 案例:常量定义数组的长度
const int N=10;
int a[N];
  • 注意点 (说明)
    ①:语句 const int N=10;也可以写成 int const N=10; 但是我个人推荐使用前一种表达方式。

2. 宏定义( define )

#include<stdio.h>

#define PI 3.1415926f //注意:不能以分号(;)结尾

int main(){
	printf("%f",PI);
	return 0;
}
  • 注意点 (说明)
    ①:该定义不能以分号结尾;否则报错;
    ②:#define没有数据类型,只是单纯的替换
    ③:define可以带参数进行宏的定义,如下代码:
#include<stdio.h>

//注意:带参数的宏定义
#define SUM(a,b) a+b  
#define MAX(a,b) a>b?a:b

int main(){
	int result=SUM(6,7);
	printf("%d\n",result);//result=13

	result=MAX(3,9);
	printf("%d\n",result);//result=9

	result=MAX(16,14);
	printf("%d\n",result);//result=16

	return 0;
}
  • 易错点 (说明)
    正如上述第二点所说:#define没有数据类型,只是单纯的替换
    所以思考以下代码的值:
#include<stdio.h>
#define SUM(a,b) a+b  

int main(){
	
	int result=SUM(2,2)*SUM(3,4);
	printf("%d\n",result);//result=12
	return 0;
}

您可能会怀疑这个值不是12,因为 ( 2 + 2 ) ∗ ( 3 + 4 ) = 28 ≠ 12 (2+2)* (3+4)= 28 ≠12 2+23+4=28̸=12,但事实确是12。
原因就在于define定义的内容只会是单纯的替换,上述表达式实际上是 2 + 2 ∗ 3 + 4 = 2 + 6 + 4 = 12 2+2*3+4=2+6+4=12 2+23+4=2+6+4=12

两种方式的比较:

  • 1.宏定义是在编译之前进行的,而const是在编译阶段处理的
  • 2.宏定义不占用内存单元,而const定义的常量占用内存单元
  • 3.宏定义没有具体的数据类型,而const有具体的数据类型
  • 4.宏定义可以带参数进行定义,而const不能带参数定义

参考文章

  1. https://www.cnblogs.com/blueberry006/p/7822347.html
  2. http://www.cnblogs.com/jiajinghai/archive/2011/11/08/2241107.html
  3. https://blog.csdn.net/grey_csdn/article/details/62549564
  • 10
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值