1. 개행이란?

개행은 줄을 바꾸는 것이다.

cout<<"Hello\\n";
cout<<"Hello"<<endl;

둘 다 줄바꿈이 된다.


2. \n

\n은 줄바꿈 문자다.

cout<<"Hello\\n";
cout<<"C++";


출력 결과

Hello
C++


특징:

  • 줄바꿈만 한다
  • 속도가 빠르다
  • 코딩테스트에서 주로 사용한다


3. endl

endl은 줄바꿈 + 출력 버퍼 비우기를 한다.

cout<<"Hello"<<endl;
cout<<"C++";

특징:

  • 줄바꿈을 한다
  • flush까지 수행한다
  • 반복해서 많이 쓰면 느릴 수 있다


4. 차이점 정리

구분 \n endl
기능 줄바꿈 줄바꿈 + flush
속도 빠름 상대적으로 느림
추천 상황 일반 출력, 코딩테스트 즉시 출력 확인 필요할 때

 


5. 버퍼와 flush 간단 정리

  • 버퍼란?
    버퍼(buffer)는 출력할 내용을 바로 화면에 보내지 않고, 잠시 모아두는 임시 공간이다.
    cout<<"Hello";
    이 출력 내용은 상황에 따라 바로 출력되지 않고 버퍼에 잠시 쌓일 수 있다.
    버퍼를 사용하는 이유는 출력을 한 번에 처리해서 속도를 높이기 위해서다.


  • flush란?
    flush는 버퍼에 쌓인 내용을 강제로 즉시 출력하는 것이다.
    cout<<flush;
    즉, 버퍼에 모아둔 출력 내용을 바로 화면에 보여주게 만든다.


  • endl과의 관계
    cout<<endl;
    은 단순 줄바꿈이 아니라 아래와 비슷하다.
    cout<<'\n'<<flush;
    => 그래서 endl은 줄바꿈도 하고, 버퍼도 비운다.(flush) => \n 보다 느림

6. 백준 2741 endl vs '\n'

- endl 사용

// endl 사용
#include <iostream>
using namespace std;

int main (){

    int a;
    cin >> a;

    for (int i=1 ; i<=a ; i++){
        cout << i << endl ; 
    }
    return 0;
}

 

 

- \n 사용

// \n 사용
#include <iostream>
using namespace std;

int main (){

    int a;
    cin >> a;
    for (int i=1 ; i<=a ; i++){
        cout << i << "\n" ; 
    }
    
    return 0;
}



7. 한 줄 결론

단순 줄바꿈은 \n, 즉시 출력까지 필요하면 endl 을 사용하면 된다.
(코테에서는 \n 사용 권장)

+ Recent posts