printf
함수와 같은 인수 형 소요 %d
또는 %i
A에 대한 signed int
. 그러나 long
가치 가있는 것은 없습니다 .
답변
l
지정자 바로 앞에 (소문자 L)를 넣으십시오 .
unsigned long n;
long m;
printf("%lu %ld", n, m);
답변
나는 당신이 의미하는 것 같아요 :
unsigned long n;
printf("%lu", n); // unsigned long
또는
long n;
printf("%ld", n); // signed long
답변
대부분의 플랫폼에서 long
와 int
동일한 크기 (32 비트)이다. 여전히 자체 형식 지정자가 있습니다.
long n;
unsigned long un;
printf("%ld", n); // signed
printf("%lu", un); // unsigned
64 비트의 경우 long long
:
long long n;
unsigned long long un;
printf("%lld", n); // signed
printf("%llu", un); // unsigned
물론 Windows에서는 다릅니다.
printf("%l64d", n); // signed
printf("%l64u", un); // unsigned
64 비트 값을 인쇄 할 때 16 진수로 인쇄하는 것이 도움이되는 경우가 많습니다 (일반적으로 숫자가 큰 경우 포인터 또는 비트 필드 임).
unsigned long long n;
printf("0x%016llX", n); // "0x" followed by "0-padded", "16 char wide", "long long", "HEX with 0-9A-F"
인쇄합니다 :
0x00000000DEADBEEF
Btw, “long”은 더 이상 (주류 x64에서) 그렇게 많은 것을 의미하지 않습니다. “int”는 플랫폼 기본 int 크기이며 일반적으로 32 비트입니다. “긴”은 보통 같은 크기입니다. 그러나 이전 플랫폼 (및 최신 임베디드 플랫폼)에서 이식성이 다른 의미가 있습니다. “long long”은 64 비트 숫자이며 보통 x- 플랫폼 휴대용 코드를 편집하는 작업을 실제로 알지 않는 한 사람들이 일반적으로 사용하는 것입니다. 그럼에도 불구하고 아마도 유형의 의미 적 의미를 캡처하기 위해 매크로를 사용했을 것입니다 (예 : uint64_t).
char c; // 8 bits
short s; // 16 bits
int i; // 32 bits (on modern platforms)
long l; // 32 bits
long long ll; // 64 bits
당시에는 “int”가 16 비트였습니다. 이제 64 비트가 될 것이라고 생각하지만, 이식성이 문제가 될 수 있습니다. 물론, 이것조차도 신비 롭고 역사가 풍부한 진실을 단순화 한 것입니다. wiki : 정수 참조
답변
부호없는 long을 참조하는 경우 서식 문자는 "%lu"
입니다. 부호있는 long을 참조하는 경우 서식 문자는 "%ld"
입니다.
답변
%ld
cplusplus.com에서 참조 하십시오printf
답변
unsigned long long
예전처럼 인쇄하려는 경우 다음을 사용하십시오.
unsigned long long n;
printf("%llu", n);
다른 모든 조합의 경우 printf manual 의 테이블을 사용하여 인쇄하려는 유형에 대해 행을 사용한 다음 열 레이블을 사용한다고 생각합니다 ( printf("%llu", n)
위와 같이).
답변
이 질문에 확실히 대답하려면 사용중인 컴파일러 이름과 버전과 컴파일하는 플랫폼 (CPU 유형, OS 등)을 알아야합니다.