printf 함수로 16진수값 출력시 0으로 채우기

숲으로의 이미지

printf의 버그인지 잘 모르겠지만..
16진수값 출력은 0으로 채우기가 안되네요.

예를들어, 다음과 같은 소스가 있다고 하면

main()
{
unsigned short a = 0x0100;
printf("%#04x\n", a);
}

이 출력값은 0x0100 이 되어야 하지 않나요?
근데 0x100 이렇게 나오는 이유는 무언지..
별짓 다해도 안되길래 일단 포기했는데 이유를 모르겠습니다 ㅜㅜ;

7339989b62a014c4ce6e31b3540bc7b5f06455024f22753f6235c935e8e5의 이미지

printf("0x%04x", a); 처럼 해보세요.

lacovnk의 이미지

4라는 개수는 앞의 0x까지 포함했던 걸로 기억합니다. 6을 줘보세요 :)