curriculum.png


Ch. 03 변수

1. 변수 선언 및 초기화

프로그래밍 시 변수를 이용하면 필요할 때 마다 값을 재사용할 수 있으며, 또한 변수명을 적절하게 지으면 해당 값이 갖는 의미를 쉽게 파악할 수 있습니다. 변수를 선언하는 방법은 다음과 같습니다.

data_type variable_name = initial_value;

자료형(data type)은 변수에 어떠한 종류의 값이 저장되는지 알려줍니다. 뿐만 아니라 자료형에 따라 데이터에 어떤 값이 저장 가능한지, 내부적으로 메모리에 어떻게 저장되는 지가 결정됩니다. 변수를 선언한 후에는 동시에, 혹은 그 이후에 값을 대입하는 과정을 거치게 되는데 이를 초기화(initialization)이라 합니다. 초기화는 필수는 아니지만 권장되는데요, 그 이유는 초기화를 거치지 않으면 변수가 생성될 때 자동으로 의미없는 값(쓰레기값, garbage value)이 저장되어 프로그램이 의도치 않게 작동할 수 있기 때문입니다.

주로 사용하는 데이터 타입 및 사용법은 다음과 같습니다.;

int a;                 // int를 이용해 정수형 변수 선언
int b, c;              // 변수 여러개를 동시에 선언
int x = 1;             // 변수 선언 및 초기화
int y = 10, z = 20;    // 변수 여러개 동시 선언 및 초기화
double d;              // double을 이용한 실수형 변수 선언
char ch;               // char를 이용한 문자형 변수 선언

변수를 생성한 후에 등호(=)을 이용해 값을 대입합니다. =을 기준으로 왼쪽에는 변수만 사용가능하며 오른쪽에는 상수, 변수, 수식 등이 올 수 있습니다.

x = 10;           // 상수 대입
y = x;            // 변수 대입 - 변수에 저장된 값을 복사
z = y + 30;       // 수식 대입 - 수식을 계산한 결과를 저장

동일한 변수가 사용되었어도 =을 기준으로 의미가 달라지는 것을 볼 수 있습니다. =의 왼쪽에 있을 때는 저장 공간, 오른쪽에 있을 때는 값의 의미를 갖게 됩니다. 이를 구분하기 위해 각각을 l-value, r-value라고 부릅니다. 따라서 이런 코드도 실행할 수 있습니다.

a = 10;
a = a + 20;           // a = 10 + 20; 과 동일
printf("%d\\n", a);    // 30

정수 자료형

데이터가 저장되는 형태는 크게 정수형과 실수형이 있습니다. C언어에는 다양한 크기를 지원하는 정수 자료형이 존재합니다. 이는 상황에 따라 적절한 크기의 자료형을 선택하여 메모리 사용 및 연산을 효율적으로 수행하기 위함입니다.

자료형 크기 (byte) 형식 지정자
char 1 %c
short 2 %hd
int 4 %d
long 4 %ld
long long 8 %lld

각 자료형의 크기는 컴파일러마다 다를 수 있습니다. 자료형의 크기가 n byte일 때 1 byte = 8 bit 이므로 나타낼 수 있는 범위는 다음과 같습니다.

$$ -2^{8 \times n - 1} \sim 2^{8 \times n - 1} - 1 $$