使用递归打印输出
Using Recursion To Print Output
#include<stdio.h>
#include<conio.h>
void main()
{
static int i=5;
clrscr();
if(--i)
{
printf("%d",i);
main();
}
getch();
}
当我 运行 这段代码时,它没有给出任何输出,当我删除 getch() 然后在 运行 之后,当我切换到输出屏幕时它显示 ouput 。为什么?
我正在使用 Turbo C++。
printf
函数在内部缓冲输出,直到
- 缓冲区已满
- 它被要求打印一个换行符(
\n
)
stdout
与 fflush()
齐平
您没有执行 2 或 3 中的任何一个,缓冲区肯定大于 5 个整数。
你可能想要
printf("%d\n",i);
如果您希望在不换行的情况下打印整数,
printf("%d ",i);
fflush(stdout);
如果每次迭代都中断,您会看到调试器的输出,但由于您显然只是在执行程序,所以您看到的是最后一次 clrscr();
的结果。因为 i
是 0,所以你没有进入 if,打印发生的地方你正好在 getch()
。希望这能回答您的问题。
#include<stdio.h>
#include<conio.h>
void main()
{
static int i=5;
clrscr();
if(--i)
{
printf("%d",i);
main();
}
getch();
}
当我 运行 这段代码时,它没有给出任何输出,当我删除 getch() 然后在 运行 之后,当我切换到输出屏幕时它显示 ouput 。为什么?
我正在使用 Turbo C++。
printf
函数在内部缓冲输出,直到
- 缓冲区已满
- 它被要求打印一个换行符(
\n
) stdout
与fflush()
齐平
您没有执行 2 或 3 中的任何一个,缓冲区肯定大于 5 个整数。
你可能想要
printf("%d\n",i);
如果您希望在不换行的情况下打印整数,
printf("%d ",i);
fflush(stdout);
如果每次迭代都中断,您会看到调试器的输出,但由于您显然只是在执行程序,所以您看到的是最后一次 clrscr();
的结果。因为 i
是 0,所以你没有进入 if,打印发生的地方你正好在 getch()
。希望这能回答您的问题。