화면 밝기
2주차 · 자료형과 선행처리기
지난 시간에는 C 프로그램의 전체 모양을 살펴봤습니다.
이번 시간부터는 프로그램 안에 값을 저장하는 방법을 배웁니다.
처음에는 int, double, char 같은 영어 단어가 낯설 수 있습니다. 하지만 오늘은 이 단어들을 외우는 것보다 **"어떤 값을 담기 위한 상자인가?"**라는 느낌을 잡는 것이 더 중요합니다.
오늘의 목표
오늘 수업이 끝났을 때 아래 다섯 가지를 설명할 수 있으면 충분합니다.
- 상수는 값이 그대로인 것, 변수는 값을 저장해 두는 이름 있는 공간이라는 것
int는 정수,double은 실수,char는 문자 한 글자를 저장할 때 주로 사용한다는 것- 변수를 사용하기 전에 선언해야 한다는 것
=는 수학의 "같다"가 아니라 오른쪽 값을 왼쪽에 넣는다는 뜻으로 쓰인다는 것#include,#define같은 문장은 프로그램 실행 전에 먼저 처리된다는 것
1. 값은 어디에 보관할까요?
프로그램은 계산만 하는 것이 아니라 값을 잠시 기억해 두었다가 다시 사용하는 일이 아주 많습니다.
예를 들어 이런 일을 하고 싶다고 생각해 봅시다.
text
나이를 기억한다.
점수를 기억한다.
가격을 기억한다.
이름의 첫 글자를 기억한다.사람은 종이에 이렇게 적어 둘 수 있습니다.
text
나이: 25
점수: 90
가격: 1500컴퓨터 프로그램도 비슷합니다.
값을 저장할 공간을 하나 마련하고, 그 공간에 이름을 붙여서 사용합니다.
이런 공간을 **변수(variable)**라고 합니다.
age
25
score
90
price
1500
위 그림에서 age, score, price는 상자의 이름이고, 안에 들어 있는 숫자는 값이라고 생각하면 됩니다.
변수 = 값을 담아 두는 이름 있는 상자
2. 상수와 변수
상수란 무엇인가요?
**상수(constant)**는 쉽게 말해 값 자체입니다.
다음 코드에서 10, 20, 3.14는 직접 적어 놓은 값입니다.
c
10
20
3.14문자나 문자열도 값이 될 수 있습니다.
c
'A'
"안녕하세요"지금은 이렇게 구분하면 충분합니다.
10→ 정수 값3.14→ 실수 값'A'→ 문자 한 글자"안녕하세요"→ 여러 글자로 된 문자열
변수란 무엇인가요?
변수는 그 값을 저장해 두고 이름으로 다시 꺼내 쓰기 위한 공간입니다.
예를 들어 다음 코드를 봅시다.
c
int age = 25;이 문장은 이렇게 읽으면 됩니다.
"정수를 저장할
age라는 상자를 만들고, 그 안에 25를 넣어 주세요."
그림으로 보면 다음과 같습니다.
int
age
25
여기서 중요한 것은 age라는 이름으로 25라는 값을 기억해 둔다는 점입니다.
3. 변수의 값은 바꿀 수 있습니다
변수(variable)라는 이름에는 변할 수 있다는 뜻이 들어 있습니다.
c
int age = 25;처음에는 age에 25가 들어 있습니다.
그 뒤에 다음 문장을 실행하면
c
age = 26;이제 age 안의 값은 26으로 바뀝니다.
text
처음: age → 25
변경: age → 26=는 "같다"가 아닙니다
학교 수학에서는 다음 식을 이렇게 읽습니다.
text
1 + 1 = 2여기서 =는 "같다"라는 뜻입니다.
하지만 C언어에서 다음 문장은 조금 다르게 읽어야 합니다.
c
age = 26;C언어의 대입문에서 =는 오른쪽 값을 왼쪽 변수에 넣는다는 뜻입니다.
age←26
따라서 머릿속에서는 다음처럼 읽으면 훨씬 쉽습니다.
age = 26;→ "26을 age에 넣는다."
초보자가 가장 많이 헷갈리는 부분
C언어에서 =는 보통 대입 연산자라고 부릅니다.
수학의 "왼쪽과 오른쪽이 같다"라는 뜻으로 생각하지 말고, 오른쪽 값을 왼쪽 상자에 넣는다고 생각하세요.
4. 직접 실행해 봅시다
아래 코드를 복사해서 실행해 봅니다.
c
#include <stdio.h>
int main(void)
{
int age = 25;
printf("나이는 %d살입니다.\n", age);
return 0;
}실행 결과:
text
나이는 25살입니다.여기에서 처음 보는 %d가 있습니다.
c
printf("나이는 %d살입니다.\n", age);지금은 %d를 정수 값이 들어갈 자리라고 생각하면 됩니다.
즉,
text
나이는 [여기에 age 값]살입니다.처럼 동작합니다.
숫자 하나만 바꿔 봅시다
c
int age = 80;으로 바꾼 뒤 다시 실행해 봅니다.
실행 결과:
text
나이는 80살입니다.오늘도 같은 방법입니다
복사 → 실행 → 한 곳만 수정 → 다시 실행
이 과정을 반복하면 문법을 억지로 외우지 않아도 코드의 의미가 조금씩 보이기 시작합니다.
5. 자료형이란 무엇인가요?
변수라는 상자를 만들 때는 어떤 종류의 값을 넣을 상자인지 컴퓨터에게 알려 줍니다.
예를 들어 집에서도 물건마다 보관 장소가 다릅니다.
text
쌀 → 쌀통
물 → 물병
옷 → 옷장컴퓨터도 비슷합니다.
text
정수 → int
실수 → double
문자 한 글자 → char이렇게 어떤 종류의 값을 저장할 것인지 나타내는 것을 **자료형(data type)**이라고 합니다.
자료형 = 이 변수에 어떤 종류의 값을 넣을 것인지 알려 주는 표시
6. 가장 먼저 만날 세 가지 자료형
처음에는 아래 세 가지부터 익숙해지면 됩니다.
| 자료형 | 주로 저장하는 값 | 예 |
|---|---|---|
int | 정수 | 10, -3, 1000 |
double | 소수점이 있는 실수 | 3.14, 72.5 |
char | 문자 한 글자 | 'A', 'B' |
int · 정수
정수는 소수점이 없는 숫자입니다.
c
int age = 25;
int score = 100;
int temperature = -5;int는 영어 **integer(정수)**에서 온 이름입니다.
처음에는 그냥
int= 정수를 넣는 상자
라고 기억하면 됩니다.
double · 실수
소수점이 있는 값을 저장할 때 많이 사용합니다.
c
#include <stdio.h>
int main(void)
{
double height = 172.5;
printf("키는 %.1fcm입니다.\n", height);
return 0;
}실행 결과:
text
키는 172.5cm입니다.%.1f는 지금 단계에서는 소수점 아래 한 자리까지 실수를 보여 주는 자리라고 이해하면 됩니다.
char · 문자 한 글자
문자 한 글자를 저장할 때는 char를 사용할 수 있습니다.
c
#include <stdio.h>
int main(void)
{
char grade = 'A';
printf("학점은 %c입니다.\n", grade);
return 0;
}실행 결과:
text
학점은 A입니다.여기서 중요한 점이 하나 있습니다.
문자 한 글자는 **작은따옴표 ' '**로 감쌉니다.
c
'A'문자열은 **큰따옴표 " "**를 사용합니다.
c
"ABC"한 글자:
여러 글자:
'A' → 작은따옴표여러 글자:
"ABC" → 큰따옴표 지금은 한글 한 글자를 char에 넣지 않습니다
char는 처음 배울 때 영문자 한 글자처럼 단순한 예제로 연습하는 것이 좋습니다.
한글처럼 여러 바이트가 필요한 문자는 뒤에서 문자열과 문자 인코딩을 다룰 때 더 정확히 이해할 수 있습니다.
7. 교재에서 만나게 될 다른 자료형
int, double, char만으로도 오늘의 기본 실습은 충분히 할 수 있습니다.
하지만 교재나 시험 문제에서는 아래와 같은 이름도 만나게 됩니다.
| 이름 | 아주 쉬운 뜻 | 예 |
|---|---|---|
short | 비교적 작은 범위의 정수 | short count = 10; |
int | 가장 기본적으로 많이 쓰는 정수 | int age = 30; |
long | 정수형의 한 종류 | long distance = 100000L; |
long long | 더 큰 정수를 다룰 때 쓰는 정수형 | long long population = 5000000000LL; |
float | 실수형 | float temperature = 23.5f; |
double | float보다 더 높은 정밀도로 실수를 다룰 때 많이 사용 | double pi = 3.141592; |
char | 문자 한 글자 또는 작은 정수 값을 저장하는 기본 문자형 | char grade = 'A'; |
void | "값이 없음"을 나타낼 때 사용하는 특별한 자료형 | main(void)의 void |
void는 무엇인가요?
지난 시간부터 계속 보던 코드에 void가 있었습니다.
c
int main(void)여기서 void는 **"전달받는 값이 없다"**는 뜻으로 사용됩니다.
void는 int처럼 숫자를 저장하는 상자라기보다, 값이 없음을 나타내는 특별한 자료형이라고 생각하면 됩니다.
함수를 배울 때 다시 자세히 다룹니다.
처음부터 전부 외우지 마세요
이번 주 실습에서는 우선 int, double, char 세 가지에 익숙해지는 것이 먼저입니다.
short, long, float 같은 이름은 "자료형에도 여러 종류가 있구나" 정도로 먼저 눈에 익혀 두면 됩니다.
signed와 unsigned
정수 자료형 앞에는 signed 또는 unsigned가 붙을 수 있습니다.
말이 어려워 보이지만 핵심은 음수를 사용할 것인가입니다.
c
signed int number = -10;
unsigned int count = 10;signed: 음수와 양수를 표현할 수 있습니다.unsigned: 음수를 사용하지 않고 0과 양수 범위를 사용합니다.
예를 들어 사람 수처럼 음수가 될 일이 없는 값에는 unsigned라는 개념을 생각할 수 있습니다.
하지만 초보 실습에서는 특별한 이유가 없다면 우선 int를 사용하는 편이 단순합니다.
int는 보통 signed int처럼 동작합니다
일반적으로 다음 두 선언은 같은 종류의 정수형으로 이해할 수 있습니다.
c
int number = -10;
signed int number2 = -10;자료형의 정확한 범위는 환경에 따라 확인합니다
short, int, long이라는 이름만 보고 무조건 몇 바이트라고 단정해서 외우는 것은 좋지 않습니다.
C 표준은 자료형 사이에 지켜야 할 최소 관계를 정하지만, 실제 크기는 컴파일러와 실행 환경에 따라 달라질 수 있습니다.
뒤에서 배우는 sizeof를 이용하면 현재 환경에서 실제 크기를 직접 확인할 수 있습니다.
8. 상수는 어떻게 적을까요?
교재에서는 상수의 종류와 표기 방법도 중요하게 다룹니다.
처음에는 평소 사용하는 숫자부터 보고, 그 다음 특별한 표기법을 살펴봅시다.
정수 상수
우리가 평소 쓰는 십진수는 그대로 적습니다.
c
10
25
1000
-30C언어에서는 8진수와 16진수 표기도 사용할 수 있습니다.
c
10 // 십진수 10
012 // 8진수 12 -> 십진수로는 10
0x0A // 16진수 0A -> 십진수로는 10십진수: 평소처럼 적기 →
8진수: 앞에 0 →
16진수: 앞에 0x →
108진수: 앞에 0 →
01216진수: 앞에 0x →
0x0A숫자 앞의 0을 가볍게 보지 마세요
C언어에서 정수 앞에 0을 붙이면 8진수로 해석될 수 있습니다.
예를 들어 010은 십진수 10이 아니라 8진수 10, 즉 십진수로 8입니다.
처음 작성하는 일반적인 정수에는 필요 없이 앞에 0을 붙이지 않는 것이 좋습니다.
실수 상수
소수점이 있는 값은 다음처럼 적을 수 있습니다.
c
3.14
172.5
0.5아주 크거나 작은 값을 나타낼 때는 지수 표기법도 사용할 수 있습니다.
c
1.0e3이 값은 다음과 같은 뜻입니다.
text
1.0 × 10³ = 1000.0지금 당장 자주 사용할 필요는 없지만, 교재에서 e가 들어간 숫자를 만나도 놀라지 않으면 됩니다.
문자 상수
문자 한 글자는 작은따옴표로 감쌉니다.
c
'A'
'B'
'1'여기서 '1'은 숫자 1 그 자체라기보다 **문자 '1'**입니다.
c
1 // 숫자 1
'1' // 문자 1둘은 서로 다릅니다.
이스케이프 문자
문자열 안에는 \n처럼 역슬래시 \로 시작하는 특별한 표현이 있습니다.
우리는 이미 줄 바꿈에 사용했습니다.
c
printf("첫째 줄\n둘째 줄\n");자주 보는 것만 몇 가지 알아봅시다.
| 표현 | 뜻 |
|---|---|
\n | 줄 바꿈 |
\t | 탭 간격 |
\\ | 역슬래시 \ 자체 |
\" | 큰따옴표 " 자체 |
예를 들어 큰따옴표 자체를 화면에 보여 주려면 다음처럼 씁니다.
c
printf("그가 \"안녕하세요\"라고 말했습니다.\n");실행 결과:
text
그가 "안녕하세요"라고 말했습니다.이런 특별한 문자를 **이스케이프 문자(escape sequence)**라고 부릅니다.
지금 가장 중요한 것은 \n
여러 이스케이프 문자를 한꺼번에 외울 필요는 없습니다.
우선 우리가 계속 사용하는 \n = 줄 바꿈부터 확실히 익숙해지면 됩니다.
9. 변수 선언이란 무엇인가요?
C언어에서는 변수를 사용하기 전에 보통 "이런 변수를 사용할 겁니다"라고 먼저 알려 줍니다.
이것을 **변수 선언(declaration)**이라고 합니다.
c
int age;이 문장은
"정수를 저장할
age라는 변수를 준비해 주세요."
라는 뜻입니다.
선언하고 나중에 값을 넣기
c
int age;
age = 25;두 줄로 나눌 수도 있습니다.
만들면서 바로 값 넣기
c
int age = 25;변수를 선언하면서 처음 값을 함께 넣는 것을 **초기화(initialization)**라고 합니다.
처음에는 용어보다 코드의 차이를 보는 것이 중요합니다.
c
int age; // 상자만 준비
int score = 90; // 상자를 준비하면서 90도 넣음추천 습관
처음 연습할 때는 가능하면 변수를 만들면서 초기값도 함께 넣는 방법이 이해하기 쉽습니다.
c
int age = 25;10. 변수 이름은 어떻게 만들까요?
변수의 이름은 우리가 직접 정할 수 있습니다.
c
int age = 25;
int score = 90;
int studentCount = 30;하지만 몇 가지 규칙이 있습니다.
규칙 1 · 영문자, 숫자, 밑줄 _을 사용할 수 있습니다
가능한 예:
text
age
score1
student_count규칙 2 · 숫자로 시작할 수 없습니다
잘못된 예:
text
1score
2026year가능한 예:
text
score1
year2026규칙 3 · C언어가 이미 사용 중인 단어는 변수 이름으로 사용할 수 없습니다
예를 들어 int, return 등은 C언어에서 이미 특별한 뜻을 가지고 있습니다.
c
int int = 10; // 잘못된 예이런 단어를 **예약어(keyword)**라고 합니다.
규칙 4 · 대문자와 소문자는 다릅니다
text
age
Age
AGEC언어에서는 모두 다른 이름입니다.
이름은 의미 있게 짓는 것이 좋습니다
다음 두 코드를 비교해 봅시다.
c
int a = 80;c
int age = 80;둘 다 사용할 수 있지만 age가 훨씬 이해하기 쉽습니다.
좋은 변수 이름
처음에는 영어가 부담스러울 수 있습니다. 자주 쓰는 간단한 단어부터 익혀도 충분합니다.
- 나이 →
age - 점수 →
score - 가격 →
price - 개수 →
count - 합계 →
total
11. 여러 변수를 사용해 봅시다
아래 코드를 복사해서 실행합니다.
c
#include <stdio.h>
int main(void)
{
int age = 30;
int score = 95;
double height = 170.5;
char grade = 'A';
printf("나이: %d\n", age);
printf("점수: %d\n", score);
printf("키: %.1fcm\n", height);
printf("등급: %c\n", grade);
return 0;
}실행 결과:
text
나이: 30
점수: 95
키: 170.5cm
등급: A여기에서 출력할 값의 종류에 따라 표시 방법도 달라졌습니다.
| 값의 종류 | 이번 시간에 사용한 표시 |
|---|---|
int 정수 | %d |
double 실수 | %f, %.1f |
char 문자 | %c |
이런 표시를 **서식 지정자(format specifier)**라고 부릅니다.
지금은 이름을 완벽히 외우지 않아도 됩니다. 실습하면서 계속 보게 됩니다.
12. 변수 값을 계산에 사용할 수 있습니다
변수에 들어 있는 숫자는 계산에도 사용할 수 있습니다.
c
#include <stdio.h>
int main(void)
{
int apple = 3;
int banana = 2;
int total = apple + banana;
printf("과일은 모두 %d개입니다.\n", total);
return 0;
}실행 결과:
text
과일은 모두 5개입니다.이 부분을 천천히 읽어 봅시다.
c
int total = apple + banana;컴퓨터는 먼저 오른쪽을 계산합니다.
text
apple + banana
3 + 2
5그리고 계산 결과인 5를 total에 넣습니다.
total←apple + banana → 5
13. 상수도 이름을 붙여 사용할 수 있습니다
프로그램 안에서 계속 같은 값으로 사용할 숫자에 이름을 붙이고 싶을 때가 있습니다.
예를 들어 원주율을 여러 번 사용한다고 생각해 봅시다.
c
3.141592이 숫자를 코드 곳곳에 계속 직접 적는 것보다 PI라는 이름을 붙이면 읽기 쉬워집니다.
C언어에서는 여러 방법이 있지만, 이번 시간에는 교재 범위에 맞춰 #define을 먼저 살펴봅니다.
c
#define PI 3.141592이렇게 적으면 아래 코드에서 PI라고 쓴 부분을 3.141592라는 값처럼 사용할 수 있습니다.
c
#include <stdio.h>
#define PI 3.141592
int main(void)
{
printf("원주율은 %.6f입니다.\n", PI);
return 0;
}실행 결과:
text
원주율은 3.141592입니다.이름을 대문자로 쓴 이유
PI처럼 #define으로 만든 이름은 관례적으로 대문자를 많이 사용합니다.
반드시 대문자로만 써야 한다는 뜻은 아니지만, **"이 값은 일반 변수와 다르구나"**라고 알아보기 쉬워집니다.
const를 이용하는 방법도 있습니다
C언어에서는 변수를 선언할 때 const를 붙여 프로그램에서 바꾸지 않을 값임을 나타낼 수도 있습니다.
c
const double PI = 3.141592;#define PI 3.141592와 완전히 같은 방식은 아니지만, 둘 다 변하지 않을 값을 이름으로 알아보기 쉽게 사용한다는 점에서는 함께 비교해 볼 수 있습니다.
지금은 두 방법이 있다는 정도만 알아두고, 이번 주 선행처리기 설명에서는 #define에 집중합니다.
14. 선행처리기란 무엇인가요?
지난 시간 첫 프로그램에서 이런 줄을 봤습니다.
c
#include <stdio.h>오늘은 이런 문장이 무엇인지 조금 더 알아봅니다.
**선행처리기(preprocessor)**는 이름 그대로 본격적으로 컴파일하기 전에 먼저 처리하는 작업을 담당합니다.
어렵게 들리지만 일상생활에 비유하면 간단합니다.
요리를 시작하기 전에
text
1. 필요한 재료를 꺼낸다.
2. 도구를 준비한다.
3. 그 다음 요리를 시작한다.라고 할 수 있습니다.
C 프로그램도 컴파일에 들어가기 전에 필요한 준비 작업을 할 수 있습니다.
① 소스 코드우리가 작성한 C 코드
② 선행처리#include, #define 등을 먼저 처리
③ 컴파일C 코드를 번역
④ 링킹필요한 코드를 연결
⑤ 실행프로그램 실행
선행처리 = 컴파일 전에 먼저 하는 준비 작업
15. #include는 무엇을 하나요?
우리가 계속 사용한 문장입니다.
c
#include <stdio.h>처음에는 다음과 같이 읽으면 됩니다.
"
stdio.h에 준비되어 있는 내용을 이 프로그램에서 사용할 수 있게 가져와 주세요."
stdio는 standard input/output, 즉 표준 입출력과 관련된 이름입니다.
우리가 사용한 printf()도 이 헤더와 관련이 있습니다.
헤더 파일이란?
stdio.h처럼 .h로 끝나는 파일을 **헤더 파일(header file)**이라고 부릅니다.
지금은 헤더 파일의 내부를 열어서 공부할 필요가 없습니다.
"필요한 기능에 대한 정보를 미리 준비해 둔 파일"
정도로 이해하면 충분합니다.
당장 외울 것은 하나입니다
화면에 글자를 출력하는 printf()를 사용할 때는 위쪽에 다음 줄을 작성합니다.
c
#include <stdio.h>16. #define은 무엇을 하나요?
#define은 어떤 이름을 특정 값이나 내용으로 미리 바꾸어 사용할 수 있게 정의합니다.
예를 들어
c
#define TAX 10이라고 작성하면 이후 코드에서 TAX라는 이름을 사용할 수 있습니다.
c
#include <stdio.h>
#define TAX 10
int main(void)
{
printf("세율 예제 값: %d\n", TAX);
return 0;
}세미콜론을 붙이나요?
여기서 한 가지 눈여겨볼 점이 있습니다.
c
#define TAX 10끝에 세미콜론 ;이 없습니다.
#include, #define처럼 #으로 시작하는 선행처리 지시문은 우리가 지금까지 본 일반적인 C 문장과 모양이 조금 다릅니다.
잘못된 예:
c
#define TAX 10;오늘 실습에서는 다음처럼 적습니다.
c
#define TAX 10교재에서 볼 수 있는 다른 선행처리 지시문
처음 실습에서는 #include와 #define만 익혀도 충분합니다.
다만 교재나 다른 C 코드에서는 다음과 같은 이름도 볼 수 있습니다.
| 지시문 | 아주 쉬운 설명 |
|---|---|
#include | 다른 헤더 파일의 내용을 사용할 수 있게 준비 |
#define | 이름이나 매크로를 정의 |
#undef | 앞에서 만든 매크로 정의를 해제 |
#if, #ifdef, #ifndef | 조건에 따라 어떤 코드를 포함할지 결정 |
#else, #elif, #endif | 조건부 선행처리의 다른 경우와 끝을 표시 |
예를 들어 다음 코드는 DEBUG라는 이름이 정의되어 있을 때만 해당 부분을 포함합니다.
c
#include <stdio.h>
#define DEBUG
int main(void)
{
#ifdef DEBUG
printf("디버그 모드입니다.\n");
#endif
return 0;
}지금은 읽을 수만 있으면 됩니다
이런 조건부 선행처리를 직접 능숙하게 작성하는 것이 이번 주의 핵심은 아닙니다.
시험이나 교재에서 #ifdef를 봤을 때 **"컴파일 전에 조건에 따라 코드를 고르는 선행처리 지시문이구나"**라고 알아볼 수 있으면 충분합니다.
17. 전처리기? 선행처리기?
책이나 인터넷을 보다 보면 전처리기라는 말도 볼 수 있습니다.
영어 preprocessor를 우리말로 옮길 때 선행처리기, 전처리기라는 표현이 모두 사용됩니다.
이 스터디에서는 방송대 교재 표현에 맞춰 선행처리기라고 부르겠습니다.
용어가 달라도 놀라지 마세요
- 선행처리기
- 전처리기
- preprocessor
문맥에 따라 같은 대상을 가리키는 표현을 만날 수 있습니다.
18. 자료형의 크기는 왜 다를까요?
컴퓨터 안에서 값을 저장하려면 실제 기억 공간이 필요합니다.
작은 물건과 큰 물건에 필요한 상자 크기가 다르듯이, 자료형마다 사용하는 저장 공간의 크기도 다를 수 있습니다.
C언어에서는 sizeof를 이용해 자료형이나 변수의 크기를 확인할 수 있습니다.
c
#include <stdio.h>
int main(void)
{
printf("int 크기: %zu 바이트\n", sizeof(int));
printf("double 크기: %zu 바이트\n", sizeof(double));
printf("char 크기: %zu 바이트\n", sizeof(char));
return 0;
}실행 환경에 따라 결과가 달라질 수 있지만, 많은 Windows 환경에서는 다음과 비슷하게 보입니다.
text
int 크기: 4 바이트
double 크기: 8 바이트
char 크기: 1 바이트바이트가 무엇인가요?
**바이트(byte)**는 컴퓨터가 기억 공간의 크기를 셀 때 사용하는 단위 중 하나입니다.
지금은 정확한 내부 구조를 모두 알 필요가 없습니다.
"자료형마다 컴퓨터 안에서 차지하는 공간의 크기가 다를 수 있다."
정도만 기억하면 됩니다.
숫자 자체를 무조건 외우지 마세요
C언어의 자료형 크기는 컴파일러와 실행 환경에 따라 달라질 수 있습니다.
따라서 int는 무조건 몇 바이트라고 외우기보다, 필요할 때 sizeof로 확인할 수 있다는 것을 알아두는 편이 좋습니다.
19. 일부러 틀려 보고 고쳐 봅시다
오류를 직접 만나 보면 규칙이 더 잘 기억납니다.
문제 1 · 변수 이름이 숫자로 시작했습니다
c
#include <stdio.h>
int main(void)
{
int 1score = 90;
printf("%d\n", 1score);
return 0;
}정답 보기
변수 이름은 숫자로 시작할 수 없습니다.
예를 들어 다음처럼 바꿀 수 있습니다.
c
int score1 = 90;
printf("%d\n", score1);문제 2 · 문자를 큰따옴표로 적었습니다
다음 코드는 char 변수에 문자 한 글자를 저장하려는 예입니다.
c
char grade = "A";정답 보기
문자 한 글자는 작은따옴표를 사용합니다.
c
char grade = 'A';큰따옴표 "A"는 문자열을 나타냅니다.
문제 3 · 변수 선언 전에 사용했습니다
c
#include <stdio.h>
int main(void)
{
age = 25;
int age;
printf("%d\n", age);
return 0;
}정답 보기
age를 사용하기 전에 먼저 선언해야 합니다.
c
int age;
age = 25;또는 한 줄로 작성할 수 있습니다.
c
int age = 25;문제 4 · #define의 위치와 모양 살펴보기
다음 두 줄 중 오늘 배운 방식으로 올바른 것은 무엇일까요?
c
#define MAX_SCORE 100c
#define MAX_SCORE 100;정답 보기
오늘 배운 #define 지시문에는 끝에 세미콜론을 붙이지 않습니다.
c
#define MAX_SCORE 10020. 오늘의 작은 실습 · 내 정보 출력하기
아래 코드를 복사합니다.
c
#include <stdio.h>
int main(void)
{
int age = 30;
double height = 170.5;
char bloodType = 'A';
printf("나이: %d세\n", age);
printf("키: %.1fcm\n", height);
printf("혈액형 첫 글자: %c\n", bloodType);
return 0;
}1단계 · 그대로 실행
먼저 아무것도 바꾸지 말고 실행합니다.
2단계 · 나이 바꾸기
c
int age = 30;숫자를 자신의 나이에 맞게 바꿔 봅니다.
3단계 · 키 바꾸기
c
double height = 170.5;값을 바꿔 봅니다.
4단계 · 문자 바꾸기
c
char bloodType = 'A';'B', 'O'처럼 영문자 한 글자로 바꿔 봅니다.
AB형은 어떻게 하나요?
char는 여기서 문자 한 글자를 연습하기 위해 사용했습니다.
AB처럼 여러 글자를 저장하는 방법은 뒤에서 문자열과 배열을 배울 때 다룹니다.
21. 조금 더 해보기 · 가격 계산
아래 코드를 복사해서 실행합니다.
c
#include <stdio.h>
int main(void)
{
int price = 1500;
int count = 3;
int total = price * count;
printf("한 개 가격: %d원\n", price);
printf("개수: %d개\n", count);
printf("총 가격: %d원\n", total);
return 0;
}실행 결과:
text
한 개 가격: 1500원
개수: 3개
총 가격: 4500원여기서 *는 곱하기입니다.
c
price * count즉,
text
1500 × 3 = 4500을 계산한 뒤 그 결과를 total에 넣습니다.
직접 바꿔 보기
price를 2000으로 바꾸거나 count를 5로 바꾸어 결과가 어떻게 달라지는지 확인해 봅니다.
22. 오늘 배운 내용 확인하기
1번
변수는 무엇인가요?
정답 보기
값을 저장해 두고 이름으로 다시 사용할 수 있는 공간이라고 생각하면 됩니다.2번
정수를 저장할 때 이번 시간에 가장 먼저 배운 자료형은 무엇인가요?
정답 보기
`int`입니다.3번
소수점이 있는 값을 저장할 때 사용한 자료형은 무엇인가요?
정답 보기
`double`입니다.4번
다음 코드에서 =는 어떤 뜻인가요?
c
age = 30;정답 보기
오른쪽의 `30`을 왼쪽 변수 `age`에 넣는다는 뜻입니다.5번
문자 한 글자 A를 char 변수에 저장하려면 어느 것이 맞을까요?
- A.
char grade = "A"; - B.
char grade = 'A';
정답 보기
B입니다.c
char grade = 'A';문자 한 글자는 작은따옴표를 사용합니다.
6번
#include, #define 같은 문장을 컴파일 전에 먼저 처리하는 것을 무엇이라고 하나요?
정답 보기
선행처리라고 하며, 이를 담당하는 것을 선행처리기(preprocessor)라고 합니다.7번
printf()를 사용할 때 이번 수업에서 포함한 헤더 파일은 무엇인가요?
정답 보기
c
#include <stdio.h>에서 사용하는 stdio.h입니다.
23. 이번 주 핵심 요약
오늘 모든 자료형과 규칙을 외울 필요는 없습니다.
아래 내용만 다시 한번 읽어 봅니다.
① 변수는 값을 저장하는 이름 있는 공간입니다.
② 자료형은 어떤 종류의 값을 저장할지 알려 줍니다.
③ int는 정수, double은 실수, char는 문자 한 글자를 저장할 때 주로 사용합니다.
④ =는 오른쪽 값을 왼쪽 변수에 넣는다는 뜻으로 사용됩니다.
⑤ #include, #define 같은 지시문은 컴파일 전에 먼저 처리됩니다.
② 자료형은 어떤 종류의 값을 저장할지 알려 줍니다.
③ int는 정수, double은 실수, char는 문자 한 글자를 저장할 때 주로 사용합니다.
④ =는 오른쪽 값을 왼쪽 변수에 넣는다는 뜻으로 사용됩니다.
⑤ #include, #define 같은 지시문은 컴파일 전에 먼저 처리됩니다.
오늘 꼭 기억할 코드 세 줄
c
int age = 30;
double height = 170.5;
char grade = 'A';그리고
c
#include <stdio.h>이 네 줄의 모양과 의미가 익숙해지는 것만으로도 오늘 공부는 충분합니다.
다음 시간 예고
다음 시간에는 프로그램이 사람과 값을 주고받는 방법을 배웁니다.
- 함수란 무엇인가?
- 화면에 출력하는
printf() - 키보드로 값을 입력받는 방법
지금까지 우리가 코드 안에 직접 적었던 숫자를 다음 시간부터는 사용자가 직접 입력할 수 있게 됩니다.