#include <stdio.h>
void up_and_down(int);
int main(void)
{
up_and_down(1);
return 0;
}
void up_and_down(int n)
{
printf("NO1: Level %d: n location %p\n", n, &n); //语句1
if(n < 4)
up_and_down(n+1);
printf("NO2: Level %d: n location %p\n", n, &n); //语句2
}
以下是输出界面:
然后,我稍微修改了下语句1及语句2,可以知道1-4递增的是语句1,4-1递减的是语句2,我的疑问就是:4-1输出语句2的原理是什么?请指教。
/*******************************************************
以二进制形式输出整数
*******************************************************/
#include <stdio.h>
void to_binary(unsigned long n);
int main(void)
{
unsigned long number;
printf("Enter an integer (q to quit): \n");
while((scanf_s("%ul", &number)) == 1)
{
printf("Binary equivalent: ");
to_binary(number);
putchar('\n');
printf("Enter an integer (q to quit): \n");
}
printf("Done.\n");
return 0;
}
void to_binary(unsigned long n)
{
int r;
r = n % 2;
if (n >= 2)
to_binary(n / 2);
// putchar(r + '0'); //原例子中为 putchar('0' + r),其中的参数更换位置,结果一样;另外这个putchar()里参数函数也不甚明白。
// putchar(r); //如果其中没有'0'是代表什么?在此一试。试出的结果是:不知名的符号。书上写明的:“如果r是0,表达式'0'+r就是字符0。
putchar(r ? '1': '0'); //此处没看懂,'0'和'1'所代表的含义。
return;
}