작성
·
54
1
printf("%zd\n",sizeof(stock_prices_history));
sizeof 함수의 반환값은 부호를 가질 수 없는 것이라고 이해했습니다. 개인적으로 찾아보았을 때 %zu 와 %zd의 차이는 부호 있는 정수형으로 출력 , 부호 없는 정수형으로 출력이라고 하여서 %zu로 출력하여도 같은 값이 나오는 것인지.. 어떤 의도가 있는 것인지 궁금합니다.
답변 1
1
안녕하세요? 질문&답변 도우미 Soobak 입니다.
sizeof
연산자의 결과는 size_t
, 즉, 부호없는 정수형입니다.
따라서, 정확하게는 %zu
형식 지정자를 사용하는 것이 일반적입니다. (강의 4.2 sizeof 연산자, 4.8 변환 지정자의 수식어들 참고)
하지만 %zd
를 사용하는 경우에도 size_t
를 같은 크기의 부호 있는 정수형으로 변환하여 결국 같은 값을 출력하게 됩니다.
저 또한 %zd
사용에 대한 이유가 궁금하여 찾아본 결과, ssize_t
와 같은 부호 있는 타입을 사용하는 경우에 대한 일관성 유지를 위해서, 혹은 디버깅과 편의를 위해 사용하기도 한다고 합니다.
참고 자료 링크
https://stackoverflow.com/questions/65650987/usage-of-zd-vs-lu-for-sizeof