1. 변수란?
변수는 데이터를 저장하는 메모리 공간입니다. 값을 담는 상자라고 생각하면 쉽습니다.
int number = 3; // 정수형 변수 number를 선언하고 3을 저장
변수 = 값을 저장하는 메모리 공간
변수를 선언하면 메모리에 공간이 할당되고, 그 공간에 값을 저장할 수 있습니다.
변수를 선언하면 메모리에 공간이 할당되고, 그 공간에 값을 저장할 수 있습니다.
2. 변수명 규칙
변수명을 지을 때는 다음 규칙을 따라야 합니다:
- 문자, 숫자, 언더바(_)만 사용 가능 (특수문자 ✕)
- 숫자로 시작 불가 (✕
3number, ✓number3) - 키워드 사용 불가 (✕
int,return,if등) - 대소문자 구분 (
Number와number는 다른 변수)
💡 좋은 변수명 짓기
의미있는 이름을 사용하세요: age, studentCount (✓)
무의미한 이름은 피하세요: a, x123 (✕)
의미있는 이름을 사용하세요: age, studentCount (✓)
무의미한 이름은 피하세요: a, x123 (✕)
// 올바른 변수명
int age = 25;
int student_count = 30;
int number1 = 10;
// 잘못된 변수명
int 3number = 10; // 숫자로 시작 (에러!)
int hello boy = 3; // 공백 포함 (에러!)
int int = 5; // 키워드 사용 (에러!)
3. 변수 선언과 초기화
선언
int number; // 변수 선언만 (값 없음)
초기화
int number = 10; // 선언과 동시에 초기화
다양한 초기화 방법
// 한 번에 여러 변수 선언
int number1, number2;
// 선언과 초기화를 동시에
int number3 = 3, number4 = 4;
⚠️ 초기화하지 않은 변수
선언만 하고 초기화하지 않으면 쓰레기 값(garbage value)이 들어있습니다. 반드시 초기화 후 사용하세요!
선언만 하고 초기화하지 않으면 쓰레기 값(garbage value)이 들어있습니다. 반드시 초기화 후 사용하세요!
실습 1
다음 코드의 실행 결과를 확인해보세요:
#include <stdio.h>
int main() {
int number1, number2;
number1 = 1;
number2 = 2;
int number3 = 3, number4 = 4;
printf("%d\n", number1);
printf("%d\n", number2);
printf("%d\n", number3);
printf("%d\n", number4);
return 0;
}
실행 결과 보기
1 2 3 4
4. C언어 기본 자료형
| 자료형 | 의미 | 크기 | 값의 범위 |
|---|---|---|---|
char |
문자 | 1바이트 | -128 ~ 127 |
short |
정수 | 2바이트 | -32,768 ~ 32,767 |
int |
정수 | 4바이트 | 약 -21억 ~ 21억 |
long |
정수 | 4/8바이트 | 약 -21억 ~ 21억 |
float |
실수 | 4바이트 | 소수점 7자리 |
double |
실수 | 8바이트 | 소수점 15자리 |
정수형
int age = 25;
short temperature = -10;
long population = 5000000;
실수형
float pi = 3.14f; // f를 붙여 float 표시
double e = 2.718281828;
문자형
char grade = 'A'; // 단일 문자는 작은따옴표
실습 2
다음 프로그램을 작성하고 실행해보세요:
#include <stdio.h>
int main() {
double number1 = 10;
int number2 = 1.2345;
short number3 = 70000;
printf("%f\n%d\n%d", number1, number2, number3);
return 0;
}
실행 결과 및 설명 보기
10.000000 1 4464
- 05번: 정수를 double에 저장하면 실수형으로 변환됩니다.
- 06번: 실수를 int에 저장하면 소수점 이하가 잘립니다.
- 07번: short 범위를 초과하면 오버플로우가 발생합니다.
5. printf 함수로 출력하기
printf 함수는 화면에 데이터를 출력하는 함수입니다.
형식 지정자
| 지정자 | 의미 |
|---|---|
%d |
정수 (int) |
%ld |
정수 (long) |
%f |
실수 (float, double) |
%c |
문자 (char) |
%s |
문자열 |
기본 사용법
#include <stdio.h>
int main() {
int number1 = 3;
int number2 = 5;
printf("%d\n%d\n", number1, number2);
return 0;
}
출력:
3
5
실습 3
다음 프로그램의 실행 결과를 확인해보세요:
#include <stdio.h>
int main() {
int number1 = 8;
int number2 = 10;
printf("%d", number1 + number2);
return 0;
}
실행 결과 보기
18
6. 형 변환 (Type Casting)
명시적 형 변환
자료형을 강제로 변환하는 것을 형 변환(Type Casting)이라고 합니다.
double number = 10; // 10.0으로 변환
int result = 5.4321; // 5로 변환 (소수점 이하 버림)
short number = 200; // 200으로 변환
⚠️ 주의
정수를 실수로 변환하면 소수점 이하 손실이 발생합니다.
자료형 범위를 초과하면 오버플로우가 발생합니다.
정수를 실수로 변환하면 소수점 이하 손실이 발생합니다.
자료형 범위를 초과하면 오버플로우가 발생합니다.
실습 4
실습 1
다음 C 프로그램에서 sizeof(100)의 결과는 무엇입니까?
변수와 자료형
정수 100은 int형으로 처리되어 4바이트입니다.
#include <stdio.h>
int main() {
printf("%d, %d", sizeof(100), sizeof(3.14));
return 0;
}
7. 문자 다루기
문자는 char 자료형을 사용하며, 작은따옴표로 표현합니다.
char ch1 = 'A'; // 문자 'A' 저장
ASCII 코드
모든 문자는 숫자로 표현됩니다. 이를 ASCII 코드라고 합니다.
char ch1 = 66; // 숫자 66 저장 (ASCII 코드로 'B')
char ch2 = 'B'; // 문자 'B' 저장 (내부적으로는 66)
실습 5
실습 2
다음 C 프로그램에서 printf(“%c\n”, ch1)의 실행 결과는 무엇입니까?
변수와 자료형
%c는 숫자를 문자로 출력하며, ASCII 코드 66은 'B'입니다.
#include <stdio.h>
int main() {
char ch1 = 66;
printf("%c", ch1);
return 0;
}
8. 상수 (Constant)
리터럴 상수
코드에 직접 작성한 값을 말합니다.
int number = 10; // 10이 리터럴 상수
심볼릭 상수 (const)
변경할 수 없는 변수를 만들 때 사용합니다.
const int LENGTH = 10;
// LENGTH = 20; // 에러! const 변수는 변경 불가
✓ const를 사용하는 이유
실수로 값을 변경하는 것을 방지하고, 코드의 의도를 명확히 전달할 수 있습니다.
실수로 값을 변경하는 것을 방지하고, 코드의 의도를 명확히 전달할 수 있습니다.
매크로 상수 (#define)
컴파일 전에 치환되는 상수입니다.
#define LENGTH 10
int main() {
printf("%d", LENGTH);
return 0;
}
실습 6
실습 3
다음 C 프로그램에서 NUMBER의 값은 무엇입니까?
변수와 자료형
const로 선언된 변수는 값을 변경할 수 없으므로 초기값인 5가 유지됩니다.
#include <stdio.h>
#define LENGTH 10
int main() {
int number = 3;
const int NUMBER = 5;
// 에러가 발생하는 코드는?
number = 10;
NUMBER = 10;
printf("%d, %d, %d", LENGTH, number, NUMBER);
return 0;
}
9. 종합 실습
문제 1 - sizeof 연산자 (기초)
문제 1
다음 C 프로그램에서 sizeof(char)의 결과는 무엇입니까?
변수와 자료형
char 자료형은 1바이트 크기를 가집니다.
#include <stdio.h>
int main() {
printf("%d", sizeof(char));
return 0;
}
문제 2 - 실수형 변환 (기초)
문제 2
3.14는 기본적으로 double형입니다. float 변수 f에 3.14를 저장할 때 컴파일 경고가 발생하지 않도록 하려면 어떻게 작성해야 합니까? (f를 포함하여 작성)
변수와 자료형
실수 리터럴 뒤에 특정 접미사를 붙여 float형임을 명시해야 합니다.
문제 3 - 문자형 출력 (기초)
문제 3
다음 C 프로그램에서 printf(“%d\n”, ch2)의 실행 결과는 무엇입니까?
변수와 자료형
'B'는 ASCII 코드로 66이며, %d로 출력하면 숫자로 표시됩니다.
#include <stdio.h>
int main() {
char ch2 = 'B';
printf("%d\n", ch2);
return 0;
}
문제 4 - 변수 교환 (중급)
문제 4
다음 C 프로그램에서 변수 교환 후 a의 값은 무엇입니까?
변수와 자료형
temp 변수를 이용하여 a와 b의 값을 교환합니다. 교환 후 a는 b의 값인 20을 가집니다.
#include <stdio.h>
int main() {
int a = 10, b = 20;
int temp = a;
a = b;
b = temp;
printf("a = %d, b = %d\n", a, b);
return 0;
}
문제 5 - 평균 계산 (중급)
문제 5
다음 C 프로그램에서 average의 값을 소수점 둘째 자리까지 작성하세요. (예: 87.67)
변수와 자료형
(90 + 85 + 88) / 3.0 = 263 / 3.0 = 87.666...이며, 소수점 둘째 자리까지 표시하면 87.67입니다.
#include <stdio.h>
int main() {
int korean = 90, english = 85, math = 88;
double average = (korean + english + math) / 3.0;
printf("평균: %.2f\n", average);
return 0;
}
핵심 요약
**1. 변수**
- 데이터를 저장하는 메모리 공간
- 선언 시 자료형을 반드시 지정
**2. 자료형**
- 정수: `char`, `short`, `int`, `long`
- 실수: `float`, `double`
- 문자: `char` (작은따옴표 사용)
**3. printf 형식 지정자**
- `%d`: 정수, `%f`: 실수, `%c`: 문자
**4. 상수**
- `const`: 변경 불가능한 변수
- `#define`: 매크로 상수 (컴파일 전 치환)
**5. 형 변환**
- 명시적 변환: `(자료형)변수`
- 자동 변환: 더 큰 자료형으로 자동 변환
PREVIOUS1. Orientation & 개발 환경 설정