본문 바로가기

Programming/C & C++

C 에서의 printf와 C++의 cout의 차이점?

가장 큰 차이라면 cout은 출력하려는 값의 형(type)을 컴파일러가 검사할 수 있는 반면에 printf()는 그렇지 못하다는 것입니다. 

따라서 버그가 발생할 확률이 높습니다. 예를 들어


/* C program */

#include〈stdio.h〉

int main()

{

  printf("%f\n", 1);

}


위의 프로그램을 컴파일하면 아무런 에러가 나오지 않지만 실행 결과는 예상과 다를 것입니다. 이는 double 형을 출력하는 서식인 %f 와 실제로 출력하려는 int 값 1이 서로 일치하지 못하기 때문입니다. 그러나 컴파일러는 이를 잡아내지 못합니다. 그리고 서식 문자열(%f, %d, %s 등)을 일일이 외워야 한다는 점도 번거롭습니다.


// C++ program

#include〈iostream〉

int main()

{

  std::cout << 1 << '\n'; // int 형 출력 함수 호출

  std::cout << 1.0 << '\n'; // double 형 출력 함수 호출

}


cout은 출력하려는 값의 형에 따라 적절한 함수를 호출할 수 있습니다. 또한 파일 입출력(fstream) 및 스트링 입출력(stringstream)에서도 표준 입출력과 동일한 인터페이스를 사용하므로 프로그래머 입장에서는 편리하다고 하겠습니다. C++ 에서도 printf()가 잘 동작하지만, 이후로 계속 C++ 프로그래밍을 하신다면 C++에 걸맞는 cout을 사용하는게 더 좋습니다. 그리고 위의 C++ 소스는 아래와 같이 변경가능합니다. 소스가 길어질 경우 훨씬 더 편할 겁니다.


// C++ program

#include〈iostream〉

using namespace std; // namespace를 사용하면 std::을 매번 사용하지 않아도 된다.

int main()

{

  cout << 1 << '\n'; // int 형 출력 함수 호출

  cout << 1.0 << '\n'; // double 형 출력 함수 호출

}

'Programming > C & C++' 카테고리의 다른 글

The Joel Test: 나은 코딩을 위한 12단계  (0) 2017.10.22
GCC의 컴파일 옵션에 관해서...  (0) 2017.10.22
GDB 사용하기  (0) 2017.10.22
GDB manual  (0) 2017.10.22
컴파일러 선택하기  (0) 2017.10.22