在scanf之后使用printf

时间:2016-06-23 11:20:43

标签: c printf scanf getchar turbo-c++

我很陌生。

 scanf ("%d", &num1 ) ;
 printf ( "The square of %d is %d \n", num1, num1*num1) ;
 getchar();

此代码在下次运行时才打印答案(我使用的是turboC ++) 即在我要求一个值之后,即使我输入一个值也没有做任何事情。 如果我按下输入它就会关闭。但是如果我不清除屏幕,我可以在下次看到打印的答案。

但是这段代码..

 scanf ("%d", &num1 ) ;
 getchar();
 printf ( "The square of %d is %d \n", num1, num1*num1) ;
 getchar();

作品!

我不明白为什么。在第一个中,getchar位于printf之后,因此它应该在关闭之前打印。如果我们假设它发生得非常快,为什么编译器会获取scanf值然后在按下回车后打印它?这不会导致序列错误吗?

在第二个中,它也会在输入后获取scanf值。但它只是在输入后打印出值(通常在另一次输入后退出)。为什么?

为什么不在第一个代码中立即执行scanf后执行printf?输入值后我应该做些什么吗?

这是第二个的完整代码

#include <stdio.h>
#include <conio.h>

int main ()
{   clrscr();
 int num1 ;
   printf ( "The Integer Squarer \n Type the Integer you would like to square \n");
 scanf ( "%d",&num1 );
  getchar();
  printf ( "The squrae of %d is %d \n", num1, num1*num1);
  getchar();
  return 0;

   }

0 个答案:

没有答案