printf("Hello World!");
cout << "Hello World!";
위 두개의 출력 함수는 버퍼링되는(버퍼에 저장되며 실행되는) 함수이다.
반면 putchar는 버퍼링되지 않고 바로 출력하기 때문에
putchar와 같이 사용하게 되면 버퍼가 차지 않은 상태에는
putchar가 먼저 출력되기 때문에 아래와 같은 예제에서
의도하지 않은 출력을 받을 수 있다.
for(int i=0;i<100;i++){
cout << i+1 << ' ';
if(i%10==9) putchar('\n');
}
out
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
1 2 3 4 5 6 7 8 9 10 ... 100
이를 방지하기 위해서는 putchar를 쓰지 않고 printf와 cout을 쓰거나
flush를 해주면 된다. (버퍼를 비워주면 된다.)