ProgramingTip

printf를 사용하여 size_t를 인쇄하는 올바른 방법은 무엇입니까?

bestdevel 2020. 11. 11. 20:30
반응형

printf를 사용하여 size_t를 인쇄하는 올바른 방법은 무엇입니까?


Size_tunsigned정수 로 정의 크기는 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 longC ++에서 실제로 지원하지 않습니다. unsigned long가장 큰 법적 정수 유형 위의 내용이 잘 작동합니다 . TR1 이후 %zu에는 size_t값에 대해 당사에서 사용할 있습니다.

참고 URL : https://stackoverflow.com/questions/940087/whats-the-correct-way-to-use-printf-to-print-a-size-t

반응형