Nagie's DevStory

[CPP] 03. cout과 printf의 차이 본문

Programming/C++

[CPP] 03. cout과 printf의 차이

Nagie 2023. 10. 16. 23:32
728x90

  
//C++
#include <iostream>
int main () {
std::cout << "오늘은 " << 2023 << "년 " << 10 << "월 " << 16 << "일 입니다.<< std::endl;
}
//C
#include <stdio.h>
int main () {
printf_s("오늘은 %d년 %d월 %d일 입니다.",2023,10,16);
}

 

cout은 C++에서 출력을 위해 사용되는 객체다.

출력하려는 값의 데이터 타입을 컴파일러가 검사할 수 있으며 

데이터 타입에 따라 적절히 형 변환 후 출력해 준다.

알아서 뭐든지 척척 해줘서 그런지 printf에 비해 처리 속도가 느리다.

 

printf 은(는) C에서 출력을 위해 사용되는 함수다.

cout과 달리 출력하려는 값의 자료형을 컴파일러가 검사할 수 없으며

이에 따라 버그의 발생 확률이 높아지지만, cout에 비해 처리 속도가 빠르다.

 

속도 차이가 발생하는 이유는 C++에서 C의 표준입출력 버퍼를 동기화하는 과정에서 딜레이가 발생해서 그렇다.

cout의 속도를 증가시키려면 개행시 endl을 불필요하게 자주 호출시키지 말아야 하며

cout.tie(NULL); 또는 sync_with_stdio(false)를 사용해 표준입출력 버퍼 동기화를 꺼줘야 한다.

다만 위와 같이 표준 입출력 버퍼 동기화를 꺼주게 된다면

printf()나 scanf()와 같은 C의 표준 입출력 함수를 사용할 수 없게 되는 단점이 있다.

728x90
Comments