본문 바로가기

Programming/C - 학습노트

20180116.헤더 파일, int형 변수, printf() 명령



1. 헤더파일(Header)


1
#include <stdio.h> 
cs


헤더 파일은 간단히 설명하면, "미리 누군가에 의해 만들어져 있는 기능들이 들어있는 파일"입니다.

일반적으로 Visual Studio로 프로그래밍 코드를 짜지만, 조금 과장해서 말하자면 Visual Studio라는 물건은 

다음과 같은 프로그램입니다.

코드 짜기 쉽게 변수나 함수별로 글자색 좀 다르게 해주고, 코드 다 짜면 빌드해서 

버그 있나 봐주고, 빌드해서 실행시켜서 보여주는 텍스트 에디터.


따라서 Visual Studio = C언어로 프로그래밍 하는 툴 이라는 말은 절반 정도만 맞았다고 볼 수 있습니다.



그럼 이런 명령어는 어디서 갖고 오는 것일까요? 그 출처가 바로 저 위에 추가된 헤더파일입니다. 주로 코드의 머릿부분 (Head)에 위치한다고 해서 헤더(HEADer)라고 부릅니다.


우리가 printf()명령어를 사용하기 위해 추가해야하는것이 바로 위에 있는 stdio.h 헤더입니다.



<stdio.h 파일 내부 모습. 저런식으로 우리가 쓸 코드들이 미리 프로그래밍되어 있습니다>


저런식으로 미리 프로그래밍되어있는 기능을 "갖고 와서"쓰는 방식입니다. 따라서 다른 기능을 쓰고 싶다면, 해당 기능이 포함된 헤더 파일을 추가해줄 필요가 있습니다.


1
2
#include <stdio.h>
#include <iostream.h>
cs



이런식으로 필요한 헤더 파일을 불러다 놓아야 합니다.







2. 정수(int)형 변수.


변수의 개념은 이전 글에서 설명드렸습니다. 간략하게 간추리자면 "특정 데이터 1개를 집어 넣는 상자"라고 할 수 있습니다. (물론 배열 등 여러개의 데이터를 넣는 변수도 존재합니다만, 아직 배우진 않았습니다)그중에서도 이번시간에 배운 변수는 정수(int)형 변수입니다.


정수형 변수는 다음과 같은 특징이 있습니다.

-2,147,483,648~ 2,147,438,647 범위 내의 정수(양수 혹은 음수) 1개를 저장해둘 수 있는 변수.


숫자 범위는 굳이 외울 필요까진 없습니다 (현재로는) 그냥 "웬만한 수는 전부 다 되는구나" 정도면 될 것 같습니다. 단지 주의할 점은,


  • 정수만 넣을 수 있습니다
  • 한 개만 넣을 수 있습니다


이런 특징을 지닙니다.


변수의 선언(생성) 방법은 다음과 같습니다.


int 변수명;

int 변수명 = 변수에 담을 수치;


위쪽은 그냥 변수만 선언하는 방식이고, 아래쪽은 변수를 선언하면서 변수에 담을 수치까지 같이 넣어주는 방식입니다. 아래와 같은 작업을 "초기화해준다"라고 하는데, 자세한 설명은 나중에 배우게 될 것으로 예상합니다. 위쪽 방법으로도 변수 선언은 가능하지만, 가능하면 아래쪽 방법으로 선언하는 쪽이 더 좋습니다.



3. printf()명령


printf명령은 콘솔창 상에서 어떤 특정 문장을 출력하는 명령어를 말합니다. 우선 사용 방법은 다음과 같습니다.


printf ("출력할 문장 내용");


단순합니다. 위와 같이 사용할 경우 따옴표("")안에 있는 문장이 콘솔에 출력되게 됩니다. 위 예제를 그대로 사용할 경우 화면에는 다음과 같이 출력되게 됩니다.


출력할 문장 내용


뭔가 좀 심심하니까 내용을 살짝 바꿔보겠습니다.


printf ("아니 근데 왜 우리집 앵무새들은 허구헌날 꽥꽥대는거지 ?????");


실행하면 이렇게 나옵니다.


아니 근데 왜 우리집 앵무새들은 허구헌날 꽥꽥대는거지 ?????


어렵지 않으실겁니다.



printf명령을 사용할 때 주의해야 할 점은 다음과 같습니다.


  • 문장만 표시할 수 있습니다. 문장은 따옴표" " 사이에 있는 내용만 문장으로 인정됩니다.

printf명령은 기본적으로 "문장"을 출력합니다. 그리고 C언어에서 문장은 무조건 "따옴표 안에" 넣어야 문장으로 인식합니다. 예를 들자면 다음과 같습니다.


"apple"        : 문장입니다. 따라서 문장을 출력하거나, 글자를 저장하는 변수에서 사용됩니다.

apple          : 문장이 아닙니다. 소스코드에서는 변수 이름으로 생각하고 해당 이름을 가진 변수를

  찾으려고 할 겁니다.물론 apple이란 변수가 없으면 그대로 에러를 띄울 겁니다.




자 그럼, 이제 문장 외의 것을 넣어서 출력해봅시다.

예를 들어서, int형 변수 a를 만들어서 그 변수의 값을 문장 가운데에 출력하고 싶으면 어떻게 할까요?


1
2
3
int a = 27;
printf ("현재 변수 a의 값은 a 입니다");
printf ("현재 변수 a의 값은" a "입니다");
cs


2번 줄처럼 하게 되면 변수이름인 a 역시 따옴표 안에 있으니까 그냥 a라고 출력되게 됩니다. 즉

현재 변수 a의 값은 a 입니다

가 출력됩니다.


3번줄처럼 해볼까요?


<삽질하고 앉아있네>


printf 명령어는 한 줄의 문장을 출력합니다. 저런식의 꼼수는 통하지 않습니다.

그럼 출력하는 방법을 알아봅시다.



%d : 정수(digit)형 변수값 출력    %f : 실수(float)형 변수값 출력    %c : 문자(char)형 변수값 출력


이걸 사용하면 변수의 값을 출력해낼 수 있습니다.

사용 방법은 다음과 같습니다.


1
2
3
int a = 27;
printf ("현재 변수 a의 값은 %d 입니다\n",a);
 
cs


1번째 줄에서 int형 변수 a를 선언해서 27의 값을 넣어주었고, 2번째 줄에서 그것을 화면에 출력시키는 코드입니다. 자세히 보시면 따옴표 안에 %d라는 문자가 보이실 텐데, 이런 뜻을 가지고 있습니다


이 자리에 정수형 변수의 값을 출력시킬 겁니다.

%관련 문법은 아마 나중에 배우시게 될 테니, 현재로는 이정도로 알아두시면 좋습니다.


위의 코드를 실행하면 다음과 같은 결과가 나옵니다. (뒤의 \n은 "한줄 띄워라"라는 의미의 명령입니다. 보기 좋으라는 의미에서 넣어서 한 줄 띄웠습니다)



원하는 결과가 나왔습니다. 위 코드를 분석해보도록 하겠습니다


printf        ("현재 변수 a의 값은     %d        입니다\n"        ,          a                   );

(명령어)        (문장)                (정수출력)     (문장)(줄바꿈)   (%d에 띄울 정수)


%d 위치에 정수가 뜨고, 그 소스는 뒤의 a가 제공합니다. a는 당연히 윗줄에 만들어둔 int a=27;에서 나온 변수 a를 말합니다.


자 그럼 여러개를 띄워보겠습니다


1
2
3
4
    int a = 27;
    int b = 77;
    
    printf("현재 a의 값은 %d이고, b의 값은 %d 이며, 둘을 곱하면 %d가 됩니다",a,b,a*b);
cs

<조금 길어서 스크롤바가 생겼습니다 양해바랍니다>


결과는 다음과 같습니다.


분석해보면 다음과 같습니다.


printf ( "현재 변수 a의 값은 %d 이고, 변수 b의 값은 %d 이며, 둘을 곱하면 %d 가 됩니다\n", ab, a*b);


보시는것과 같이 %d의 순서대로 뒤에 넣은 변수들의 값이 들어갑니다. (각각 대응되는 변수는 색으로 구분해두었습니다)


마찬가지로 %f , %c 역시 같은 방법으로 사용하게 됩니다. (아직 float ,char형 변수는 소개만 되었고 사용하진 않았습니다)


그럼 마지막 의문점입니다

변수값 말고 그냥 상수는 못 넣나요?

물론 넣을 수 있습니다. 다음과 같은 코드의 결과는

그런데 이런건 그냥 printf("2곱하기 3은 6입니다"); 라고 쓰는게 편하지 않을까요? 따라서 보통 %d는 정수형 변수의 값을 출력할때 사용하게 됩니다.





4. 소스 코드


오늘은 여기까지입니다. 주석이 첨부된 소스코드 파일 다운로드를 원하시면 아래 링크를 이용해주세요

(모든 소스파일은 당일 제시된 연습문제에 대한 해답 등은 삭제된 후 제공됩니다)

20180116.cpp