이전 글
2020/11/01 - [학습/성조C] - C언어 프로그래밍 - 2 printf() 함수 [1/3]
안녕하세요 성조입니다.
이전에 1/3에서 printf() 함수에 대하여 간략한 설명을 나눴습니다.
이번 2/3에서는 printf()나 s, fprintf()에 많이 쓰이는 서식 지정자에 대하여 설명을 드리려 합니다.
서식 지정자의 경우 printf() 함수 안에 값을 대입하여 출력할 수 있지만 변수를 이용해서 사용하는 것이 대부분이며, 형식 지정자로도 많이 불렸습니다.
하지만 필요한 것들만 이해하고 넘어가기 위해서 한번 체크하는 형식으로 봐주시면 좋을 것 같습니다.
인터넷에서 C언어 문제를 풀거나 흔하게 접할 수 있는 서식 지정자를 위주로 설명을 드리고 다른 서식 지정자의 경우 필요시 구글에 검색해서 찾는 형식으로 공부하시는 것이 좋다 생각됩니다.
C언어의 숫자형을 찾아보신 경우 int, float, double형으로 숫자를 입력받는 것을 배우셨을 것입니다.
만약 C언어의 숫자형을 모르시는 경우 다음과 같이 있음을 가볍게 이해하시면 좋을 것 같습니다.
int 형 - 정수
float 형 - 32bit의 실수형
double 형 - 64bit의 실수형 등으로 나옵니다.
정수형 |
%u - 양의 10진수 |
%d - +, -가능한 10진수 |
정수형의 경우 크게 두 가지를 사용하여 작성할 수 있습니다.
%u에는 정수 값만 들어갈 수 있는데 위와 같이 정수를 입력하면 다음과 같이 디버깅 화면이 나옵니다.
하지만 다음과 같이 입력하는 경우
디버깅 화면을 보면 이상한 값이 전달되는 경우가 있습니다. 즉 %u의 경우 양의 정수만 사용할 수 있는 서식 지정자입니다.
%d를 사용하여 정수 값을 표현하는 경우는 다음과 같습니다
%d의 경우 +, -부호에 상관없이 두 값 모두 표현이 가능한 서식 지정자인 것을 알 수 있었습니다.
현실에서 사용하는 숫자는 10진수여서 10진수를 사용하는 서식 지정자를 사용해서 값을 봤습니다.
C언어에서는 서식 지정자를 이용하여 8진수 표현, 16진수 표현을 할 수 있습니다.
8진수의 경우 %o를 사용합니다.
10을 8진수의 값으로 표현하면 12가 나옵니다.
16진수의 경우 %x를 사용합니다.
단 16진수의 %x의 경우 %X로 작성하면 대문자로 표기됩니다.
이것으로 자주 흔하게 사용되는 정수형을 알아봤습니다.
다음은 실수형입니다.
실수형 |
float - %f |
double - %lf |
실수형의 경우 크게 2가지 표현을 자주 사용하는데
32bit의 float형과 64bit의 double형이 존재합니다.
%f의 경우 단정밀도 32비트 실수형으로 출력된다고 위키백과에 나오는데
%f를 사용한 방법과 %lf를 사용한 방법 두가지 모두 3.145619까지만 출력되고 나머지 값들은 자동으로 디버깅 화면에 출력되지 않았습니다.
둘의 가장 큰 차이점으로는 메모리 크기라고 볼 수 있습니다.
float형의 메모리 크기는 4 byte double형은 8 byte이며 유효 자리수는 float형은 7자리 double형은 16자리까지 유효한 자리 값을 갖습니다.
full name도 다르지만 간략하게 이정도 선으로 이해하고 향후 필요하면 추가적으로 학습하는 것을 추천드립니다.
다음은 문자에 대한 입력 방법입니다.
문자형 |
%c - 문자 |
%s - 문자열 |
문자형의 경우
알파벳 또는 한 글자만 가능한 문자와 문장이 되는 문자열로 나눠집니다.
문자와 문자열의 차이에 대한 내용은 향후 포스팅에서 다룰 예정이므로 바로 사용 예시를 보여드리겠습니다.
%c를 사용하여 문자를 출력하는 경우 a를 입력하면 다음과 같습니다.
C언어는 문자의 경우 ''(작은따옴표)로 묶어줍니다.
문자열의 경우 ""(큰따옴표)로 묶어줍니다.
또한
%c 서식 지정자를 지정해 주는 경우 문자만 입력이 가능하므로 즉 하나의 값만 출력이 가능하므로 a와 b가 같이 입력된 경우에 하나만 출력됩니다.
%c의 문자를 출력하는 경우 ""를 사용하여 묶으면 이상한 값이 출력됩니다.
%s로 입력하는 경우 하나의 문장을 입력받거나 연속되는 문자를 입력할 수 있게 됩니다.
위에 %c를 사용하였을 때 출력되지 않은 ab의 값이 출력되는 것을 알 수 있습니다.
C언어에서는 문자열을 출력하는 경우가 종종 보이는데 문자열을 출력할 때 %s를 사용하여 출력합니다.
자주 사용되는 서식 지정자를 정리하면 다음의 표와 같습니다.
지정자 | 의미 |
%u | 양의 10진수 정수만 출력합니다. |
%d | +, - 부호의 상관없는 10진수 정수형을 출력합니다. |
%f | 유효 자리수 7자리 까지의 실수형을 출력합니다. |
%lf | 유효 자리수 16개의 실수형을 출력합니다. |
%c | 문자를 출력합니다. |
%s | 문자열을 출력합니다. |
8진수와 16진수의 표기 방법은 자주 사용되는 표현이 아니므로 우선순위로 생각하는 위의 표를 이해하고 암기하고 향후 필요할 때 검색해서 추가적으로 이해하시면 좋을 것 같습니다.
- reference -
혼자 C언어를 공부하면서 타인에게 설명할 수 있을 만큼의 이해도를 얻기 위해서 작성하는 글이므로 올바르지 못한 표현이나 이해가 안 가는 부분에 대해서 댓글 달아주시면 정말 감사드리겠습니다!!
다음 포스팅 때 뵙겠습니다!
'C, C++ > C study' 카테고리의 다른 글
C언어 프로그래밍 - 4 printf() 이스케이프 시퀀스 [3/3] (1) | 2021.12.01 |
---|---|
C언어 프로그래밍 - 2 printf() 함수 [1/3] (0) | 2020.11.01 |
C언어 프로그래밍 - 1 C언어 시작하기 (0) | 2020.10.28 |
C언어 다운로드 하는 방법 (비주얼 스튜디오) (2) | 2020.10.26 |