#define f( a,b,x ) ax+b原题:
编辑: admin 2017-12-03
-
4
宏定义是编译前的简单字符串替换,不是其他类型参数的替换,不经过计算,没有错误处理,所以
f(6,5,f(3,2,1)))替换结果就是
6*f(3,2,1)+5
=6*3*1+2+5
=25
这样写宏定义时一定注意括号
简单函数功能可使用内联函数来做
类似问题
类似问题1:#define N 10#define s(x) x*x#define f(x) (x*x)main(){int i1,i2;i1=1000/s(N);i2=1000/f(N);printf("%d %d\n",i1,i2);}运行结果是?
i1=1000/s(N)=1000/10*10=1000
i2=1000/f(N)=1000/(10*10)=10
输出
1000 10
类似问题2:#define f(a,b,x) a*x+b printf("%d,%d\n",f(3,2,1),f(6,5,f(3,2,1)));
5,25
类似问题3:对下面程序段:#define A 3 #define B(a) ((A+1)*a) x=3*(A十B(7)); 正确的判断是( )A.程序错误,不许嵌套宏定义B.)x=93C.x=21D.程序错误,宏定义不许有参数
B
类似问题4:# define A 3 # define B(a) (( A + 1 )*a ) M x = 3*( A + B( 7 ) ) ;# define A 3# define B(a) (( A + 1 )*a )Mx = 3*( A + B( 7 ) ) ;这个要怎么解答[数学科目]
x=3*(3+((3+1)*7)=93
类似问题5:#define f(x) x*x main() {int a=6,b=2,c; C=f(a)?f(b); printf("%d\n",c);}
宏 要加括号 不然有风险
变量 要初始化
c是区分大小写的