我很陌生。
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;
}