printf를 사용하여 size_t를 인쇄하는 올바른 방법은 무엇입니까?
Size_t
unsigned
정수 로 정의 크기는 32 비트 또는 64 비트 컴퓨터를 사용하는지에 따라 따라합니다. 인쇄하는 비행하고 이식 가능한 방법은 size_t
무엇입니까?
%zu
형식을 사용합니다
size_t val = get_the_value();
printf("%zu",val);
z 부분은 인수가 size_t 길이가 될 말하는 길이 지정자입니다.
출처 -http : //en.wikipedia.org/wiki/Printf#printf_format_placeholders
이것에 C ++ 태그가 있으므로 cout <<
또 다른 가능한 대답이 있습니다.
이 C의 모든 버전에서 unsigned long
작동 작동 하기가 놀랍도록 어렵습니다. C90에서는 작동해야하지만 C99에서는 작동하지 않습니다. C90과 C99를 안정적으로 식별하는 기능은 1995 년 변경 사항 (에 대한 허용 값 지정)에서 도입되었습니다 __STDC__
. C90, C99 및 C ++에서 작동하는 완전히 이식 가능한 방법은 믿을 수 있지만 실질적인 솔루션이 있습니다.
C ++ 대답은 다음과 가변합니다.
std::size_t n = 1;
std::cout << n;
C 스타일 IO의 경우 조금 더 복잡합니다. C99에서는 값 에 대한 z
길이 수정 튼 추가했습니다 size_t
. 그러나 TR1 이전에는 지원되지 않는 것이 다음과 같은 것입니다.
std::size_t n = 1;
std::printf("%lu\n", static_cast<unsigned long>(n));
그런 다음 다시 말하지만 unsigned long long
C ++에서 실제로 지원하지 않습니다. unsigned long
가장 큰 법적 정수 유형 위의 내용이 잘 작동합니다 . TR1 이후 %zu
에는 size_t
값에 대해 당사에서 사용할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/940087/whats-the-correct-way-to-use-printf-to-print-a-size-t
'ProgramingTip' 카테고리의 다른 글
사용자 자격 증명을위한 Android 키 체인 (0) | 2020.11.12 |
---|---|
Sun JDK의 소스 코드는 어디에서 볼 수 있습니까? (0) | 2020.11.11 |
C # 확장 방법가 개인 변수에 액세스 할 수 있습니까? (0) | 2020.11.11 |
C ++ 크로스 플랫폼에서 URL을 파싱하는 쉬운 방법? (0) | 2020.11.11 |
씨 # /. NET에서 포인터를 사용하는 경우 (0) | 2020.11.11 |