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 : 부호 없는 정수 출력