printf : 형식문자열을 사용하여 문자열을 출력하는 함수

         형식문자를 구분하기 위해 %기호를 사용

         형식문자의 개수에 따라 인자의 수도 일치해야

         특정 숫자에 대응하는 문자를 만들었는데 아스키코드라 한다

         컴퓨터는 문자를 모르지만 해당 숫자에 대응하는 아스키코드에 의해서

         문자나 특수문자를 표현할 있다.

 


 형식문자

자 료 형 

설     명 

 %c

 int(char) 

 아스키 문자로 출력

 %d

 int

 부호가 있는 10진수로 출력

 %u

 unsigned int

 부호가 없는 10진수로 출력

 %x

 모든 자료형

 16진수로 출력

 %e

 float, double

 지수형 실수로 출력

 %f

 float, double

 10진수 실수로 출력

 %p

 pointer

 16진수 주소로 출력

 %s

 string 

 인자가 가리키는 메모리 값의 문자열로 출력


  

printf(“%c”, 65);

형식문자 %c 인자의 값을 정해진 값에 맞는

아스키코드로 출력해주는데 숫자 65

해당하는 문자는 A이므로 문자 A 출력.


 

printf(“%c”, 65+1);

숫자 65 해당하는 아스키코드가 A이고

숫자 66 해당하는 아스키코드가 B이므로

65+1 66이므로 문자 B 출력.


 

printf(“%d”, 65);

형식문자 %d 인자의 값을 부호가 있는 10진수로 출력하므로

숫자 65 출력.


 

printf(“0x%x”, 65);

형식문자 %x 인자의 값을 16진수로 출력하며

16진수 문자인 것을 알기위해 형식문자 앞에 0x를 작성

0x41 출력.

 


printf(“%s”, “Hi”);

형식문자 %s 인자가 가리키는 메모리 값의 문자열을 출력하므로

대응하는 인자의 메모리 값의 문자열인 Hi 출력.


char Name[8] = {"Hi"};

printf("%s", Name);

위와 똑같은 결과를 출력



char Name[12] = {“Hello”};

printf(“%p”, Name);

 

형식문자 %p는 인자의 16진수 주소를 출력하는 것이고

Name이라는 식별자는 “Hello”라는 문자가

저장되어 있는 16진수 주소를 가지고 있는 

배열 이름이고 그 주소를 출력하는데 쓰인다.


 

printf(“%f”, 123.45);

형식문자 %f 인자의 값을 10진수 실수로 표현하며,

%f 32비트, %lf 64비트 자료형이지만

printf함수에서는 float double

모두 %f 표현해도 문제가 되지 않는다

double 표현되므로 123.4500000으로 출력.

컴파일러에서 기본값으로 지정한 소수점 이하 자리수가

6자리이기 때문에 소수점 이하 6자리까지 표현됨.

 

기본적으로 실수의 값을 double형식으로 인지.

123.45라고 한다면 double형식으로 표현.

만약 값을 123.45f 작성하면 해당 자료형을

float형식으로 표현한다.

값은 123.449997 나온다.

 

여기서 주의할 점이 바로 유효자리수 인데

유효자리수가 의미하는 것은 신뢰할 있는 값의 범위이다.

float형의 경우 소수점이하 7번째 자리부터의 

값은 잘못된 값이라는 뜻이고 이를 부동소수점 오차라고 한다.

float형의 유효자리수 6

double형의 유효자리수 15

 

따라서 float 소수점이하 6자리까지의 값은 신뢰가능하지만

이하 자리의 값은 반올림하여 표현하므로

표현 값의 범위가 넓은 실수를 계산하는 것에는

정확성이 떨어지므로 float 왠만하면 쓰지 않는 것이 좋다.

 

 

printf(“%12.3f”, 123.45)

전체 자리수 12자리에 소수점 아래 3자리까지 표현

    123.450” 이런식

"     123"까지가 8자리, "450"까지 3자리. 


 

printf(“%.10f”, 123.45)

소수점 아래 10까지 표현. 123.4500000000


 

printf(“%d”, 123.45)

실수 값을 정수표현방식으로 출력하는 %d 작성하면

출력값의 오류가 발생

 


printf(“%f”, 123)

정수 값을 실수표현방식으로 출력하는 %f 작성하면

출력값의 오류가 발생



printf(“%d”, -1) : -1


printf(“%u”, -1) : 4,294,967,295

32비트가 표현할 있는 최대값






** 잘못알고 있는 것이 있으면 댓글로 알려주시면 감사하겠습니다! **

+ Recent posts