IT이야기

긴 형식의 인쇄물에 대한 인수는 무엇인가?

cyworld 2022. 5. 7. 09:37
반응형

긴 형식의 인쇄물에 대한 인수는 무엇인가?

printf함수는 다음과 같은 인수 유형을 사용한다.%d또는%i의 이유로signed int. 그러나, 나는 아무 것도 볼 수 없다.long가치를 매기다

놓아라l(하향 문자 L) 지정자 바로 앞에.

unsigned long n;
long m;

printf("%lu %ld", n, m);

대부분의 플랫폼에서,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

아, 그리고 물론 윈도우에서는 다르다.

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, "긴"은 더 이상 (주류 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 참조:정수

내 생각에 당신은 다음과 같은 것을 말하는 것 같다.

unsigned long n;
printf("%lu", n);   // unsigned long

또는

long n;
printf("%ld", n);   // signed long

%ldcplusplus.com에서 참조를 참조하십시오.

혹시나 인쇄하려고 할 경우unsigned long long이전과 마찬가지로 다음을 사용하십시오.

unsigned long long n;
printf("%llu", n);

다른 모든 조합의 경우, 인쇄물 설명서의 표를 사용하여 행을 선택한 다음 인쇄하려는 유형에 대해 컬럼 레이블을 사용하십시오.printf("%llu", n)상부의

서명되지 않은 긴 길이를 참조하는 경우 형식 지정 문자는"%lu". 서명이 긴 것을 참조하는 경우 형식 지정 문자는"%ld".

나는 이 질문에 확실하게 대답하기 위해서는 당신이 사용하고 있는 컴파일러 이름과 버전, 그리고 그것이 컴파일하고 있는 플랫폼(CPU 타입, OS 등)을 알아야 한다고 생각한다.

참조URL: https://stackoverflow.com/questions/38561/what-is-the-argument-for-printf-that-formats-a-long

반응형