c语言带参数的宏函数,第10天C语言(06):带参数的宏定义

#include

int sum(int v1,int v2)

{

return v1 + v2;

}

/*

#define SUM(v1,v2) v1+v2

#define 代表要定义宏

SUM 宏的名称

(v1,v2) 参数, 注意点, 不需要写数据类型

v1+v2 用于替换的内容

宏定义 并不会做任何运算, 无论是有参数 还是没有参数 都仅仅是在翻译 0 和 1之前做一个简单的"替换"

SUM(v1,v2) 宏

v1+v2 值

什么时候 用带参数的宏定义 什么时候 用函数

如果函数内部的功能比较简单, 仅仅做一些简单的运算 那么可以使用宏定义, 使用宏定义效率更好,运算速度更快,

如果函数内部的功能比较复杂, 不仅仅是一些简单的运算, 那么建议使用函数

带参数的宏定义注意点

1.一般情况下 建议写带参数的宏的时候,给每个参数加上()

2.一般情况下 建议写带参数的宏的时候, 给结果也加上一个()

*/

#define SUM(v1,v2) v1+v2

// 要求定义一个带参数的宏,用于计算两个变量的乘积

#define CF(v1,v2) (v1)*(v2)

// 要求定义一个带参数的宏,用于计算某个数的平方

//#define PF(v1) (v1)*(v1)

#define PF(v1) ((v1)*(v1))

int main()

{

/*

// 要求 不使用函数,实现计算两个变量的和

int a = 10;

int b = 5;

// int res = sum(a,b);

// SUM(a,b) v1==a v2==b

// a + b

int res = SUM(a, b);

*/

/*

什么时候 用带参数的宏定义 什么时候 用函数

如果函数内部的功能比较简单, 仅仅做一些简单的运算 那么可以使用宏定义, 使用宏定义效率更好,运算速度更快,

如果函数内部的功能比较复杂, 不仅仅是一些简单的运算, 那么建议使用函数

*/

// printf("res = %i\n",res);

// int res = CF(10,10);

// CF(5+5,4+4)

// 5 + 5*4 + 4 = 29

// int res = CF(5 + 5,4 + 4); // 10 + 8 = 80

// int res = PF(2+2);

// 16 / 16 *16 = 16

// PF(2 + 2) / PF (2 - 2) * PF(2 + 2)

// (2 + 2) * (2 + 2) / (2 + 2) * (2 + 2) * (2 + 2) * (2 + 2)

// 4 * 4 / 4 * 4 * 4 * 4

// 16 / 4 * 4 * 4 * 4

// 4 * 4 * 4 * 4 = 16 * 4 * 4 = 256

// PF(2) / PF(2) * PF(2)

// ((2)*(2)) / ((2)*(2)) * ((2)*(2))

// 4 / 4 * 4 = 4

int res = PF(2) / PF(2) * PF(2);

printf("res = %i\n",res);

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值