C언어 왕초보 탈출

[C언어 왕초보 탈출] #4. 컴퓨터의 기억 상자, 변수와 자료형

게임플밍마스터 2025. 7. 1. 11:53

지난번엔 printf로 화면에 멋진 메시지를 띄워봤죠? 하지만 프로그램이 정해진 말만 반복한다면 너무 심심할 거예요. 사용자의 정보를 기억하거나, 계산 결과를 저장하는 등 무언가를 **'기억'**하는 기능이 필요합니다.

이번 시간에는 컴퓨터의 기억 공간인 **변수(Variable)**와, 그 공간에 어떤 종류의 데이터를 담을지 알려주는 **자료형(Data Type)**에 대해 배워보겠습니다!


📦 변수(Variable)란 무엇일까요?

마트에서 장을 본다고 상상해 보세요. 계란, 우유, 사과를 샀다면 각각 다른 봉투나 상자에 담을 거예요. 그리고 헷갈리지 않게 '계란', '우유'라고 이름표를 붙여놓겠죠?

프로그래밍의 변수가 바로 이 **'이름표를 붙인 상자'**와 같습니다. 데이터를 저장하기 위해 마련된 메모리 공간에 우리가 알아보기 쉬운 이름을 붙인 것이죠. 우리는 이 이름을 통해 언제든지 그 공간에 새로운 값을 넣거나(저장), 안에 든 값을 꺼내 볼 수(참조) 있습니다.

📜 변수 이름, 아무렇게나 지으면 안 돼요! (규칙)

사람 이름을 지을 때처럼, 변수의 이름을 지을 때도 몇 가지 규칙을 따라야 해요.

  • 알파벳(a-z, A-Z), 숫자(0-9), 밑줄(_)을 사용할 수 있어요. (예: score, user_level)
  • 첫 글자는 숫자로 시작할 수 없어요. (O: num1, X: 1num)
  • C언어에서 이미 사용 중인 단어(키워드, 예: int, if, for)는 사용할 수 없어요.
  • 대문자와 소문자를 구분해요. (age와 Age는 서로 다른 변수입니다. 정말 중요해요!)

🤔 상자의 종류를 정해요: 자료형(Data Type)

다시 장보기 비유로 돌아가 볼까요? 계란은 깨지기 쉬우니 칸이 나뉜 상자에, 우유는 액체이니 종이팩에 담아야 안전하겠죠?

C언어에서도 저장하려는 데이터의 종류에 따라 '상자의 종류', 즉 자료형을 미리 정해줘야 합니다. "나 이제부터 정수를 담을 상자 하나 만들 거야!" 또는 "문자 하나를 담을 작은 공간이 필요해!"라고 컴퓨터에게 알려주는 거죠.

대표적인 기본 자료형은 다음과 같습니다.

자료형 (키워드) 의미 예시
int 정수 (Integer) 10, 0, -100
char 문자 (Character) 'A', 'b', '!'
float 실수 (Floating point) 3.14f, -0.01f
double 실수 (더 정밀함) 3.141592, 1.5
 

💡 어떤 자료형을 써야 할까?

  • 나이, 개수, 점수 등 소수점이 없는 숫자는 int
  • 이름의 첫 글자, 등급(A, B, C) 등 문자 하나는 char (작은따옴표 **' '**로 감싸주세요!)
  • 키, 몸무게, 평균 점수 등 소수점이 필요한 숫자는 float 또는 double

앞으로 int와 char를 정말 많이 사용할 예정이니 이 두 가지는 꼭 기억해 주세요!


🛠️ 변수 만들기: 선언과 초기화

이제 컴퓨터에게 우리가 필요한 상자(변수)를 만들어달라고 요청해 봅시다.

  1. 선언: "이런 종류의, 이런 이름의 상자를 만들어 줘!"라고 요청하는 과정이에요.예를 들어, 나이를 저장할 정수형 변수 age를 선언하는 코드는 다음과 같습니다.
    int age;
    
    자료형 변수이름;
    

     

  2. 초기화: 만들어진 변수에 처음으로 값을 넣어주는 것을 '초기화'라고 해요. 대입 연산자 =를 사용합니다.[꿀팁] 코드에서 175.5f처럼 숫자 뒤에 f를 붙였죠? C언어는 기본적으로 소수를 double형으로 인식하기 때문에, "이 숫자는 float형이야!"라고 명확히 알려주기 위해 f를 붙이는 것이 좋은 습관입니다.
    int age = 25;                  // 정수형 변수 age를 선언하고 25로 초기화
    float height = 175.5f;         // 실수형 변수 height를 선언하고 175.5로 초기화
    char blood_type = 'A';         // 문자형 변수 blood_type을 선언하고 'A'로 초기화
    
  3.  

👩‍💻 [직접 해봐요!] 예제 코드로 확인하기

백문이 불여일견! 지금까지 배운 내용을 코드로 직접 확인해 봅시다.

#include <stdio.h>

int main(void) {
    // 1. 다양한 자료형으로 변수를 선언하고 원하는 값으로 초기화합니다.
    int age = 20;
    double height = 178.5;
    char initial = 'H';

    // 2. printf 함수를 이용해 변수에 저장된 값을 출력합니다.
    // %d는 정수(int), %.1f는 소수점 첫째 자리까지의 실수(double), %c는 문자(char)를 의미해요.
    printf("제 나이는 %d살 입니다.\n", age);
    printf("제 키는 %.1fcm 입니다.\n", height);
    printf("제 이름의 첫 글자는 %c 입니다.\n", initial);

    return 0;
}

✅ 실행 결과

제 나이는 20살 입니다.
제 키는 178.5cm 입니다.
제 이름의 첫 글자는 H 입니다.

printf 안의 %d, %.1f, %c는 서식 지정자라고 불러요. "이 자리에 뒤에 오는 변수의 값을 채워서 보여줘!"라는 약속 기호랍니다.

 


 

🔍 printf의 단짝, 서식 지정자 파헤치기

예제 코드에서 %d, %.1f, %c 같은 기호들을 보셨죠? 이들을 **'서식 지정자(Format Specifier)'**라고 불러요. 이름 그대로, printf 함수에게 "이 자리에 어떤 종류(서식)의 데이터를 어떤 모양으로 출력할지" 알려주는 아주 중요한 약속 기호랍니다.

printf는 그냥 변수만 툭 던져주면 그 안에 든 값이 정수인지, 문자인지, 실수인지 알지 못해요. 그래서 %d를 사용해서 '여기에 **정수(10진수)**가 들어올 거야!'라고 미리 알려주는 거죠.

가장 자주 사용하는 서식 지정자 친구들을 소개할게요.

서식 지정자 대응 자료형 의미
%d int 정수(10진수, Decimal)를 출력해요.
%f float, double 실수(Floating-point)를 출력해요.
%c char 문자 하나(Character)를 출력해요.
%s char[], char* 문자열(String)을 출력해요. (나중에 자세히 배워요!)
%% 없음 % 문자 자체를 출력하고 싶을 때 사용해요.
 

💡 서식 지정자를 더 똑똑하게 사용하는 법

서식 지정자는 추가적인 옵션을 통해 출력 형태를 더 세밀하게 제어할 수 있어요.

  • 소수점 자릿수 조절하기 (.숫자f): 실수를 출력할 때 소수점 아래 몇 자리까지 보여줄지 정할 수 있습니다.
    double pi = 3.141592;
    printf("기본 출력: %f\n", pi);       // 출력: 3.141592
    printf("소수점 둘째 자리까지: %.2f\n", pi); // 출력: 3.14
    

     

다음장에서 더 자세히 다루니 여기서는 간단하게만 설명할께요. 

 

🚀 [도전! 프로그래밍] 연습문제

이제 여러분 차례입니다! 아래 설명을 보고 직접 프로그램을 만들어 보세요.

미션: 자신이 가장 좋아하는 숫자, 자신의 평균 학점(또는 예상 학점), 혈액형(A, B, O, AB 중 하나)을 각각 변수에 저장한 뒤, 예제처럼 화면에 보기 좋게 출력하는 프로그램을 작성해 보세요.

  • 가장 좋아하는 숫자: number (정수형)
  • 평균 학점: gpa (실수형)
  • 혈액형: blood_type (문자형)

다 작성했다면 댓글로 코드를 올려보세요.