가장 큰 차이라면 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 |