10.20作业(define函数)

(1)c语言中,除了可以用 #define 定义一个标识符来表示一个常量,还可以用 #define 定义函数

例子:

//定义常量
#define MAX_VALUE 100       //定义整型变量MAX_VALUE值为100
#define USER_NAME "huge"    //定义字符串变量USER_NAME值为"huge"
#define PI 3.1415926        //定义浮点数变量PI值为3.1415926

//定义函数(定义函数的种类分为带参数的函数和不带参数的函数)
①(带参数的方程)#define MAX(a,b) (a>b)?a:b  //取两个数最大值
#define MIN(a,b) (a<b)?a:b  //取两个数最小值

②(不带参数的方程)

#define MAX(a,b) (a>b)?a:b //取两个数最大值

 #define MIN(a,b) (a<b)?a:b //取两个数最小值

注:define 定义函数陷阱

①define 函数陷阱一

#define RESULT(x) x*x

int main()

{

printf("RESULT是:%d\n",RESULT(2)); 

 printf("RESULT是:%d\n",RESULT(2+1));

return 0;

} /* RESULT是:4

RESULT是:5 */

原因:

#define RESULT(x)  x*x
RESULT(2) 等价 2*2 = 4
RESULT(2+1) 等价 2+1*2+1 = 5

解决方法

#define RESULT(x) (x)*(x) //在参数两侧加括号

printf("RESULT是:%d\n",RESULT(2));

printf("RESULT是:%d\n",RESULT(2+1)); //等价 (2+1)*(2+1) = 9

/* RESULT是:4

RESULT是:9 */
②define函数陷阱二

#define RESULT(x)  (x)*(x)
int main()
{
    printf("RESULT是:%d\n",RESULT(2));
    printf("RESULT是:%d\n",9/RESULT(2+1));
   return 0;
}
/*
RESULT是:4
RESULT是:9
*/
原因

#define RESULT(x)  x*x
RESULT(2) 等价 2*2 = 4
9/RESULT(2+1) 等价 9/(2+1)*(2+1) = 9

解决方法

#define RESULT(x)  ((x)*(x)) //在参数两侧加括号,整个表达式也需要加上括号

int main()
{
    printf("RESULT是:%d\n",RESULT(2));
    printf("RESULT是:%d\n",9/RESULT(2+1));
   return 0;
}
/*
RESULT是:4
RESULT是:1
*/
————————————————
版权声明:本文为CSDN博主「猿说编程」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ZhaDeNianQu/article/details/120095018

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值