c/c++ 에서 long long 형식의 변수를 출력하기 위한 방법입니다. printf long long 타입에 저장된 데이터를 화면에 출력하기 위한 치환자가 헷갈려서 찾아 보았습니다.
inttypes.h를 보면 int64_t, uint64_t, PRId64, PRlu64가 다음과 같이 정의되어 있습니다
<정의>
typedef long long int64_t;
typedef unsigned long long uint64_t;
#define PRId64 "lld"
#define PRIu64 "llu"
*long long형은 32bit OS, 64bit OS에서동일하게 64bit(8Byte)입니다.
*int64_t, uint64_t 는 stdint.h에 정의되어 있습니다
*PRId64, PRIu64는 inttypes.h에 정의되어 있습니다.
<소스>
#include<stdint.h>
#include<inttypes.h>
int main()
{
int64_t i64 = -6000000000;
printf("i64: %lld \n", i64);
printf("i64: %" PRId64 "\n", i64);
uint64_t ui64 = 6000000000;
printf("ui: %llu \n", ui64);
printf("ui: %" PRIu64 "\n", ui64);
return 0;
}
<결과>
visual studio에서 실행 결과입니다.
%lld : signed long long 출력
%llu : unsigned long long 출력
%lli : long long 10진수로 출력
%llo : long long 8진수로 출력
%llx : long long 16진수로 출력
%u : 부호 없는 정수 출력