概述
一、引出
#include<stdio.h>
int main()
{
double r;
printf("Input r:");
scanf("%lf",&r);
printf("C=%fn",2*3.14159*r);
printf("S=%f",3.14159*r*r);
return 0;
}
1.幻数:本题中,圆的周长和面积的计算公式中用到了圆周率Π,而Π的值再程序中是用一个常数近似表示的,像这种在程序中直接使用的常数,成为幻数。
2.幻数存在的问题:
(1)程序中使用过多的幻数使得程序的可读性变差。
(2)在程序的很多地方输入相同的幻数,很难保证不发生书写错误。
(3)当常数需要改变时,不仅工作量巨大,而且还可能遗漏。
3.解决方案:把幻数定义为宏常量或const常量,代替程序中多次出现的常数。
#include<stdio.h>
#define PI 3.14159
int main()
{
double r;
printf("Input r");
scanf("%lf",&r);
printf("C=%f",2*PI*r);
printf("S=%f",PI*r*r);
return 0;
}
二、宏常量
1.定义:宏常量也称为符号常量,是指用一个表示符号来表示的常量,这时该标识符号与此常量是等价的。
2.一般形式:
#define 标识符 字符串
3.作用:用#define编译预处理指令定义一个标识符和一个字符串,凡在源程序中发现该标识符时,都用其后的字符串来替代。
4.宏定义中的标识符被称为宏名,为了与源程序中的变量名有所区别,习惯用字母全部大写的单词来命名宏常量。
三、注意事项
宏定义中的宏名与字符串之间可以有多个空白符,但无需加等号,且字符串后一般不以分号结尾,因为宏定义不是C语句,而是一种编译预处理命令。
四、const 常量
1.使用宏常量最大的问题就是,宏常量没有数据类型。编译器对宏常不进行类型检查,只进行简单的字符串转换,字符串替换时极易产生意想不到的错误。这时候就需要const 常量。在声明语句中只需要把const类型修饰符放在类型名之前,即可将类型名后的标识符声明为具有该类型的const常量。由于编译器将它放在只读存储区,不允许程序中改变其值,因此const常量只能在定义时赋初值。
#include<stdio.h>
int main()
{
double r;
const double PI=3.14159;
printf("Input r");
scanf("%lf",&r);
printf("C=%f",2*PI*r);
printf("S=%f",PI*r*r);
return 0;
}
2.与宏常量相比,const常量的优点在于它有数据类型,编译器能对其进行数据检查,某些集成化工具可以对const常量进行调试。
最后
以上就是丰富哈密瓜为你收集整理的宏常量、宏替换以及const 常量的全部内容,希望文章能够帮你解决宏常量、宏替换以及const 常量所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复