지난번엔 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를 정말 많이 사용할 예정이니 이 두 가지는 꼭 기억해 주세요!
🛠️ 변수 만들기: 선언과 초기화
이제 컴퓨터에게 우리가 필요한 상자(변수)를 만들어달라고 요청해 봅시다.
- 선언: "이런 종류의, 이런 이름의 상자를 만들어 줘!"라고 요청하는 과정이에요.예를 들어, 나이를 저장할 정수형 변수 age를 선언하는 코드는 다음과 같습니다.
int age;
자료형 변수이름;
- 초기화: 만들어진 변수에 처음으로 값을 넣어주는 것을 '초기화'라고 해요. 대입 연산자 =를 사용합니다.[꿀팁] 코드에서 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'로 초기화
👩💻 [직접 해봐요!] 예제 코드로 확인하기
백문이 불여일견! 지금까지 배운 내용을 코드로 직접 확인해 봅시다.
#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 (문자형)
다 작성했다면 댓글로 코드를 올려보세요.
'C언어 왕초보 탈출' 카테고리의 다른 글
[C언어 왕초보 탈출] #6. 프로그램의 핵심 도구, 연산자(Operator) 완벽 정복하기 (3) | 2025.07.13 |
---|---|
[C언어기초] 5. 입출력문 (2) | 2025.07.03 |
[C언어기초] 3. Hello World (1) | 2025.06.29 |
[C언어기초] 2. 개발환경 구축하기 - visual studio 설치 (1) | 2025.06.27 |
[c언어기초] 1. 프로그래밍 첫걸음 떼기 (10) | 2025.06.20 |