1、宏指令是简单的替换,
由于 #define M(x, y) x / y
而 M(10, 2+3);
所以其被替换为 10 / 2 + 3,所以结果为8
2、刚看错了以为是Fibonacci数列呵呵!
由于 x <= 0 ? x : f(x-1) + f(x-2)
所以
f(2)
= f(1) + f(0)
= f(0) + f(-1) + 0
= 0 - 1 + 0
= -1
3、
第一次:k = 0, s = 0
End:k = 1, s = 0
第二次:k = 1, s = -1
End:k = 2, s = -1
第三次:k = 2, s = -1
End:k = 3, s = 0
第四次:k = 3, s = 0
End:k = 4, s = 2
第五次:k = 4, s = 2
End:k = 5, s = 5
第六次:k = 5, s = 5
End:k = 6, s = 9
所以结果为:6, 9
1.相当于10/2+3=8,因为它是原封不动的带入。
2. 当x<=0时f(x)=x
当x>=0时f(x)=f(x-1)+f(x-2)
所以:
f(2)=f(1)+f(0)=f(0)+f(-1)+f(0)=-1
3、k s同步变化,所以s=0
因为k<10停止循环,所以k=10
(10,0)
printf("%d", M(10,2+3)); =printf("%d", 10/2+3);
所以是8
f(2)=f(1)+f(0)=f(0)+f(-1)+0=0+-1=-1
(6,9) 推一下~~~