首页 技术资料正文

#define用法,C语言#define详解(double在c语言中的意思)

piaodoo 技术资料 2022-08-26 21:50:59 1002 0

define用法,C语言define详解(double在c语言中的意思)

define用法,C语言define详解

C语言中,可以用 define 定义一个标识符来表示一个常量。其特点是:。又叫。预编译不是编译,而是编译前的处理,编译器正式开始编译程序之前,会执行一段预处理程序(又称预处理器)专门对程序执行预处理操作。

C语言程序从编写到运行要经过预处理、编译、汇编和链接这 4 个阶段,但大多数人习惯将前 3 个阶段统称为编译阶段,所以才有了“程序要经过编译和链接后才能运行”的说法。关于各个阶段到底做了哪些工作,C语言程序又是怎样一步步转换为可执行程序的,感兴趣的读者请了解详情。小径的拼音

用 define 定义标识符的一般形式为:

define  标识符  常量   //注意, 最后没有分号

define 和 include 一样,也是以“”开头的。凡是以“”开头的均为,define也不例外。define又称,标识符为所定义的宏名,简称。标识符的命名规则与前面讲的变量的命名规则是一样的。一经定义,程序中就可以直接用标识符来表示这个常量。是不是与定义变量类似?但是要区分开!宏所表示的常量可以是数字、字符、字符串、表达式。其中最常用的是数字。那么,程序中什么时候会使用宏定义呢?用宏定义有什么好处呢?我们直接写数字不行吗?为什么要用一个标识符表示数字呢?宏定义最大的好处是“方便程序的修改”。使用宏定义可以用宏代替一个在程序中经常使用的常量。注意,是“经常”使用的。这样,当需要改变这个常量的值时,就不需要对整个程序一个一个进行修改,只需修改宏定义中的常量即可。且当常量比较长时,使用宏就可以用较短的有意义的标识符来代替它,这样编程的时候就会更方便,不容易出错。因此,宏定义的优点就是方便和易于维护。那么程序在预编译的时候是怎么处理宏定义的呢?或者说是怎么处理预处理指令的呢?对宏定义而言,预编译的时候会将程序中所有出现“标识符”的地方全部用这个“常量”替换,称为“宏替换”或“宏展开”。替换完了之后再进行正式的编译。所以说当单击“编译”的时候实际上是执行了两个操作,即先预编译,然后才正式编译。include也是这样的,即在预处理的时候先单纯地用头文件stdio.h中所有的“文本”内容替换程序中include这一行,然后再进行正式编译。需要注意的是,预处理指令不是语句,所以后面不能加分号。这是很多新手经常犯的错误。include 后面也没有加分号。宏定义 define 一般都写在函数外面,与 include 写在一起。当然,写在函数里面也没有语法错误,但通常不那么写。define 的作用域为自 define 那一行起到源程序结束。如果要终止其作用域可以使用 undef 命令,格式为:

undef  标识符

undef 后面的标识符表示你所要终止的宏。比如前面在程序开头用 define 定义了一个宏 M,它原本的作用范围是一直到程序结束,但如果现在在程序中某个位置加了一句:
undef  M
那么这个宏的作用范围到此就结束了。undef 用得不多,但大家要了解。为了将标识符与变量名区别开来,习惯上标识符全部用大写字母表示。宏定义用得最多的地方是在数组中用于指定数组的长度。下面来写一个程序:
include 
 define NUM 5
int main(void)
{
    int i, j = NUM;
    int a[NUM] = {0};
    printf("请输入%d个数:", j);
    for (i=0; i输出结果是:请输入5个数:5 4 3 2 15 4 3 2 1NUM 是定义的宏,它表示的是其后的常量(而不是变量)。此外,程序中用双引号括起来的宏在预处理的时候是不会被宏替换的。因为在 C 语言中,用双引号括起来表示的是字符串。下面再写一个程序看一下:
include 
 define PI 3.14159
int main(void)
{
    double r, s;
    printf("请输入圆的半径:");
    scanf("%lf", &r);  //scanf中, double只能用%lf
    s = PI * r * r;
    printf("s=PI*r^2 = %.6f\n", s);  //PI不会被宏替换
    return 0;
}
输出结果是:请输入圆的半径:1s=PI*r^2 = 3.141590

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/119248.html

评论

搜索