#define f( a,b,x ) a*x+b
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/20 05:24:51
#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
原题:
下列程序段的输出是 _______ .
#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
这样写宏定义时一定注意括号
简单函数功能可使用内联函数来做
f(6,5,f(3,2,1)))替换结果就是
6*f(3,2,1)+5
=6*3*1+2+5
=25
这样写宏定义时一定注意括号
简单函数功能可使用内联函数来做
#define f( a,b,x ) a*x+b
#define f(a,b,x) a*x+b #include void main() printf("%d,%d\n"
#include #define f(a,b,x) a*x+b void main() { printf("%d,%d\
#include #define A 2 #define B(x) x*(A+2) void main() { int
#include #define f(x) x*x main() {int a=6,b=2,c; c=f(a)/f(b)
#define f(x) x*x main() {int a=6,b=2,c; C=f(a)?f(b); printf(
#define f(a,b,x) a*x+b printf("%d,%d\n",f(3,2,1),f(6,5,f(3,2
#define A B
#define M(x) x*x int a=3,b=2; M(a+b)/M(a+b)=?
#define MA(x) x*x-1 int a=1,b=2; cout
#define A ((a *)b) 是什么意思
#define LT(a,b) ((a)