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