新手,有两个国二的问题请教大家
第一个问题:#include<stdio.h>
#define S(x) x/x
void main()
{
int k=5,j=2;
printf("%d,%d\n",S(k+j),S(j+k));
}
输出的结果为什么是7,9??我感觉应该是1,1才对啊。。k+j和j+k有什么区别??
第二个问题:
#include<stdio.h>
voidfun(int x)
{
if(x/2>0) fun(x/2);
printf("%d",x);
}
void main()
{
fun(6);printf("\n");
}
这里考察函数的递归调用,可是为什么输出的结果是136,应该是631才对啊??
1 宏定义是无脑替换,所以
S(k+j) 等价于 k+j/k+j ==5+2/5+2 == 7
同理 S(j+k)
2 递归的意思是先递再归,也就是最后一层递归是最先出来的
页:
[1]