在宏定义 #define PI 3.14159中,…

本文详细解释了C语言中的宏定义,包括无参数和带参数的宏定义,以及宏定义中的#和##运算符的用法。强调了宏展开的过程仅涉及文本替换,不涉及类型检查和内存分配,同时指出宏定义可能带来的安全隐患,建议尽量避免使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

答案是D  编译预处理的时候,宏名PI将被字符串“3.14159“代替,这一替换过程称为宏展开
宏的定义格式为
#define 宏名 字符串或者字符

 

、、、、、、、、、、、、、、、、、、、、、、、、

1.要明白C语言中的宏机制:
    c程序编译分过程分为三个步骤:(1)预处理;(2)编译;(3)链接在预处理阶段,编译器中的预处理器会将你定义的宏展开,即 原封不动的替换宏的定义,只是在处理文本,就像word里面的替换一样。
2.然后要明白常量的含义:
   常量是在程序编译以后对应的一块内存存储区域,这块存储区域可读不可写。将变量写进存储区域,要经过编译成汇编,在汇编成机器语言(二进制的指令),然后链接,当运行时才会真正写内存。所有工作必须在预处理之后。常量可以这样定义: const double pi=3.1415;

理解的关键是:预处理只处理文本,只做文本替换。

//

宏和全局变量的区别?

 

区别在于宏定义没有类型

比如宏定义#define pi 3.1415926这里的pi并没有类型

而全局变量放在主函数的前面 double pi=3.1415926;

建议你少用宏定义,因为宏定义存在很强的安全隐患,没有类型的变量当然在很

多时候会造成很多错误了,而且所有的宏定义都可以用其他的方式代替,一般情

况下更简便,只不过大多初学者以为宏定义看起来似乎很酷,所以初学的时候都

喜欢用,其实现在基本上已经没什么人用宏定义了,用了宏定义的程序健壮性不

///

 

                                        宏定义
        1.0、宏定义,即宏替换、宏代换,简称宏。
                 宏结构:
                             #define  宏名部分  宏体部分
                 预处理(预编译),即宏展开,用具体内容替换宏名部分。预处理在程序编译过程中不做语法检查。
                 使用规则:
      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值