printf 류 함수를 사용할때, int64형과 같이 큰 데이터를 그냥 '%d' 로 집어 넣으면 제대로 출력되지 않는다.
0으로 출력되거나 엉뚱한 값이 나올 것이다.
해결방법을 알기전에 먼저 타입에 대한 잠깐 언급을 해보면,
int64 타입은 32비트 또는 64비트 플랫폼에서 모두 64비트 크기를 가지고 있다.
반면 size_t, ptrdiff_t타입은 32비트 플랫폼에서는 32비트사이즈, 64비트 플랫폼에서는 64비트 사이즈를 가지고 있다.
해결방법은 크게 2가지가 있다.
먼저 printf 는 cout로 대체, sprintf 는 boost::format 이나 std::stringstream 을 사용하면 된다.
그 다음 방법은 더 간단하다.
'%lld' 를 사용하면 된다.
printf("%lld", i);
simple?
특히 마지막 방법은 컴파일러에 상관없이 모두 사용가능하다. ( C++Builder, MSVC, GCC )
'프로그래밍 > C++' 카테고리의 다른 글
수치적분 사다리꼴 C 코드 (0) | 2016.10.05 |
---|---|
char 배열 초기화 방법 (0) | 2016.09.29 |
C++11 스마트포인터 (0) | 2016.07.20 |
C++11 재정의규칙과 override (0) | 2016.07.11 |
C++11 이동생성자 (Move Constructor) (2) | 2016.07.05 |