C-9 常量和宏

常量和宏

define定义常量

#include<stdio.h>

#define MAX = 10000

int main()
{
    printf("%d\n",MAX);

    return 0;
}

这就是使用 define 定义常量,定义完后下面可以直接使用,得到打印结果 10000

-------------------------------------------------------------------------------------------------------------------------------- 

define定义宏

还是使用 define 定义一个符号,这里使用定义 ADD 演示。

#define  ADD

这时我们希望 ADD 可以完成两个数的相加,那在这个的后面就要加上 (X,Y) 

#define  ADD (X,Y)

当这两个参数传进去,可以完成相加的操作,这个通过加上 X+Y 实现

#define  ADD (X,Y)  X+Y

这样就完成了 define 的定义,但是这样操作会出现一些问题,比如下面这段代码:

#include<stdio.h>
#define  ADD (X+Y)  X+Y

int main()
{
    printf("%d\n",4*ADD(2,3));   //11

    return 0;
}

这时得到的结果不是 4*5 得出 20 ,而是 11 。        

这是因为 define 定义的宏是被替换的,他是把 ADD 替换成 2+3 ,也就是变成了 4*2+3 ,得出的 11 。

为了避免这种情况的发生,定义宏时应规范。

#define  ADD (X,Y)  X+Y

其中的 X+Y ,X与Y都可能不是普通的变量,可以是表达式,所以要分别括起来,而 X+Y 是一个整体,需要把宏体整个括起来。

#define  ADD (X,Y)  ((X)+(Y))

当这样书写后再次运行代码,得出的就是 20 了。   

​
#include<stdio.h>
#define  ADD (X+Y) ((X)+(Y))

int main()
{
    printf("%d\n",4*ADD(2,3));   //20

    return 0;
}

​

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值