作业帮 > 综合 > 作业

#define f( a,b,x ) a*x+b

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/04 03:07:52
#define f( a,b,x ) a*x+b
原题:
下列程序段的输出是 _______ .
#define f(a,b,x) a*x+b
printf("%d,%dn",f(3,2,1),f(6,5,f(3,2,1)));
第二个我以为是35 可为什么是25?
我是这样想的:6 * f(3,2,1) + 5 = 6 * 5 + 5 = 35
宏定义是编译前的简单字符串替换,不是其他类型参数的替换,不经过计算,没有错误处理,所以
f(6,5,f(3,2,1)))替换结果就是
6*f(3,2,1)+5
=6*3*1+2+5
=25
这样写宏定义时一定注意括号
简单函数功能可使用内联函数来做