1. 程式人生 > >printf()和scanf()執行順序

printf()和scanf()執行順序

原始碼:

void main()
{
int a,b,c,x2,y2;
printf("輸入a,b,c:\n");
scanf("%d%d%d",&a,&b,&c);
result(a,b,c,&x2,&y2);
test(a,b,c,x2,y2);
printf("x=%d,y=%d\n",x2,y2);

}

Cygwin執行結果(在Linux地下執行正常):

$ ./a.exe
(一開始為空白行  輸入後全部一次列印如下......)
輸入a,b,c:
5 4 3

結果正確!x=3,y=-3

程式碼修改:新增語句(取一下兩條語句中的其中一條即可)

setvbuf(stdout,NULL,_IONBF,0);

fflush(stdout);

void main()
{
int a,b,c,x2,y2;
//setvbuf(stdout,NULL,_IONBF,0);
printf("輸入a,b,c:\n");
fflush(stdout);
scanf("%d%d%d",&a,&b,&c);
result(a,b,c,&x2,&y2);
test(a,b,c,x2,y2);
printf("x=%d,y=%d\n",x2,y2);
}