2. 변수와 자료형

header


1. 변수란?

변수는 데이터를 저장하는 메모리 공간입니다. 값을 담는 상자라고 생각하면 쉽습니다.

int number = 3;  // 정수형 변수 number를 선언하고 3을 저장
변수 = 값을 저장하는 메모리 공간
변수를 선언하면 메모리에 공간이 할당되고, 그 공간에 값을 저장할 수 있습니다.

2. 변수명 규칙

변수명을 지을 때는 다음 규칙을 따라야 합니다:

  • 문자, 숫자, 언더바(_)만 사용 가능 (특수문자 ✕)
  • 숫자로 시작 불가 (✕ 3number, ✓ number3)
  • 키워드 사용 불가 (✕ int, return, if 등)
  • 대소문자 구분 (Numbernumber는 다른 변수)
💡 좋은 변수명 짓기
의미있는 이름을 사용하세요: 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)이 들어있습니다. 반드시 초기화 후 사용하세요!

실습 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. 형 변환** - 명시적 변환: `(자료형)변수` - 자동 변환: 더 큰 자료형으로 자동 변환