Teach

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ Teach ] in KIDS
글 쓴 이(By): savage (남세진)
날 짜 (Date): 1995년08월01일(화) 21시05분18초 KDT
제 목(Title): [RE][질문] g++로 프로그램을 하는데...

다음과 같이 프로그램을 고쳐보니 잘 실행이 되더군요.

#include <iostream.h>
#include <stdio.h>

main()
{
  printf("하하하\n");
  cout << " 지금은 cout테스트중입니다.\n";
  cout.flush();
  printf("하하\n");
}

문제는 다음과 같았습니다. cout의 멤버함수인 flush는 출력디바이스로 
보내질 문자들이 임시대기 장소인 출력버퍼를 클리어하는 역할을 합니다.
대개의 경우 flush함수는 ostream의 객체를 소멸시키기전에 자동으로 
flush()함수를 호출하기 때문에 프로그래머가 직접 이 함수를 부르는 일은 
거의 없다고 합니다. 그래서 flush를 콜하지 않은 전의 경우 cout 객체가 
소멸되는 main의 마지막에서야 호출되어 버퍼의 내용을 지우게되어 
결국 엉뚱한 결과가 나오게 되었던 것입니다. 
그런데 이번 프로그램에서는 직접 flush를 써주었기때문에 올바른 결과가
나온것입니다.

[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.