我是靠谱客的博主 丰富哈密瓜,最近开发中收集的这篇文章主要介绍宏常量、宏替换以及const 常量,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、引出

#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 常量所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部