본문 바로가기

블로그 공학/단기 컨텐츠

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 로 출력하면 됩니다.