Printf 출력 서식
자료형에 맞는 형식 지정자를 사용하는게 좋습니다.
일률적으로 %c, %d를 사용하게 되면 뜻하지 않은 값이 출력 될 수도 있습니다.
예를 들어서
int i = -1;
printf("%d %u\n", i, i);
라는 문장을 실행하면 출력 결과는
-1 ffffffff
라고 출력됩니다.
double 형의 값을 %f로 출력하면
float형의 값으로 출력되는데, 이 값이 float형으로 표현되지 않는 값이라면 엉뚱한 값이 출력됩니다.
double형은 %lf로 출력하는게 좋습니다.
c언어에서는 char형이나 short int형 모두 int형으로 처리되기때문에 %d를 써도 출력이 되지만
전용 출력 지정자를 사용해서 출력하는게 좋습니다.
부호있는수와( signed) 부호 없는 수는 (unsigned) 부호가 음수일 경우에는 보수가 출력되기때문에
꼭 전용 출력 지정자를 사용해야 합니다. (물론 일부로 보수 출력을 보기위한 경우에는 예외이겠지만요...)
그리고 long 형 값을 %d로 출력할때 long 형의 자료형 크기와 int 형의 자료형 크기가 같다면 문제는 없지만
두 자료형의 크기가 다른 경우 long 형의 값이 짤려서 엉뚱한 값으로 출력될 수 있기때문에 전용지정자를 사용하는게 좋습니다.
unsigned short int 는 %uh 이나 %hu로 출력하면 됩니다.
unsigned long int 는 %ul이나 %lu로 출력하면 됩니다.
float 형은 %f로 double 형은 %lf 로 출력하면 됩니다.
참고로 long double 형은 %Lf 로 출력하면 됩니다.