C에서 뿐만 아니라 변수는 프로그래밍에서 매우 중요한 개념 중 하나입니다.
사실 따지고 보면 너무나도 기본적인 개념이라 이미 알고 계신 분들이 많을 것이라 생각하지만,
그래도 한 번은 이야기 해보려고 합니다.
1. 변수의 개념
변수는 하나의 상자와 같은 개념이라고 생각하시면 됩니다.
상자안에 우리가 저장하고 싶은 것을 저장하고, 언제든지 꺼내서 사용할 수 있도록 하는 것이
변수의 개념입니다.
그림과 같이, 프로그램에서
printf("%d", A);
를 통해서 변수 A의 값을 요청했습니다.
이후 변수 A에 저장되어있는 값을 받아서
102를 출력할 수 있게 됩니다.
2. 변수 선언
변수는 바로바로 사용할 수 있는 개념이 아닙니다.
물론 바로바로 사용해도 되는 언어가 있긴 한데.. C는 그렇지 않습니다.
(깐깐한 C..)
변수를 사용하기 이전 다음과 같은 정보를 전달해서 "앞으로 변수를 쓸 거야!" 하고 전달해 주어야 합니다.
변수의 종류, 이름, 속성, 초기값 등등...
변수를 사용하기 위해서 꼭 전달해 주어야 합니다. 각각은 다음과 같이 쓰입니다.
정보 | 의미 | 비고 |
종류 | 변수에 어떠한 값이 저장되게 될지 결정합니다. | 정수형, 문자형, 실수형... |
이름 | 변수를 어떠한 이름으로 부를지 결정합니다. | x, alpha, str, arr... |
속성 | 변수가 어떠한 성질을 지닐지 결정합니다. | auto, static, extern... |
초기값 | 변수의 초기값을 결정합니다.(필수 아님) | int a = 10; 등 |
이러한 값들은 [변수의 선언] 에 있어서 필요한 정보입니다.
각 정보를 어떻게 전달하는지 알아보겠습니다.
(속성) (종류) (이름) = (초기값)
ex :
static int a = 10;
auto char c, b;
int array[10];
float *str;
예제가 참 다양하죠? 모두 위의 형식에서 변형된 선언문인데, 가끔 요소가 빠진 선언이라던지, 새로운 것들이 자주 보입니다.
하나씩 설명해보겠습니다.
static int a = 10;
- static 속성을 가지는 정수(int)형 변수 a를 선언하고 10을 이 값에 대입하라.
auto char c, b;
-auto 속성을 가지는 문자(char)형 변수 c, b를 선언하라.
-초기값을 생략한 선언문이다.
int array[10];
-auto 속성을 가지는 정수형 변수 10개의 배열 array를 선언하라.
-속성을 생략하면 auto 속성을 자동으로 지니게 됩니다.
-[ ] 은 배열을 선언할 때 쓰이는 구두점이다.
float *str;
-auto 속성을 가지는 실수형 포인터 변수 str을 선언하라.
-가끔 저렇게 변수 앞에 *가 붙기도 하는데, 이는 포인터 변수를 선언할 때 쓰이는 구두점이다.
입니다. 사실, 당장에 변수를 배우는 입장에서 이를 바로 이해하기란 힘듭니다.
그냥, 지금은 변수를 선언할 때는 이렇게 하는구나 정도로 알아두시면 됩니다.
(어짜피 하다보면 싫어도 익혀집니다.)
3. 변수 사용
변수 사용은 매우 간단합니다!
선언된 변수의 이름을 쓰면 바로 사용할 수 있게 됩니다.
또한 변수의 이름을 좌변에 쓰고 대입 연산자(=)를 사용하여 새로운 값을 할당할 수 있습니다.
예시를 살펴 봅시다.
int main() {
int a = 0, b = 7;
printf("%d\n", a);
a = a + b;
printf("%d, %d", a, b);
}
어렵지는 않죠?
printf 함수에 대한 내용이 궁금하시면 아래의 포스팅을 참고해 주세요!
2022.12.26 - [IT/C] - [C] printf 함수
[C] printf 함수
함수 printf(const char* Format, ...); 헤더 파일 stdio.h 의미 console 화면에 문자열을 출력한다. 응용 서식자 등의 다양한 활용이 가능 활용 printf("Hello, World!"); -> Hello, World printf("국어 : %d점, 수학 : %d점", 90
blue-skynight.tistory.com
output은
0
7 7
으로 나오겠습니다.
int a = 0, b = 7; 로 변수 a, b의 선언 및 값 초기화를 진행하였고,
a = a + b; 로 변수 a에 변수 a와 변수 b의 값을 더해서 할당하였습니다.
3. 변수 종류
변수의 종류에는 매우 다양한 값이 존재합니다.
변수의 종류 | 특징 | 비고 |
char | 문자형 ( 1 byte ) | 0 ~ 255의 값 |
short | 정수형 ( 2 byte ) | -32768 ~ 32767 |
int | 정수형 ( 4 byte ) *32bit 기준 | -2147483648 ~ 2147483647 |
long | 정수형 ( 4 byte ) | -2147483648 ~ 2147483647 |
float | 실수형 ( 4 byte ) | +- 3.4e +- 38 |
double | 실수형 ( 8 byte ) | +- 1.7e +- 308 |
bool | 논리형 ( 1 byte ) | True(1) or False(0) |
long과 int의 값이 같은 것을 볼 수 있다.
long은 항상 4byte의 크기를 지니나
int 형은 레지스터와 같은 크기를 지니기 때문에 32bit에서는 4byte가 됩니다.
그러니까, 옛날의 16bit 시절에는 2byte의 크기를 지니고 있었고, 현재의 64bit 시절에는 8byte의 크기를 지니게 됩니다.
(사실 프로그래밍하면서 숫자가 저렇게 크게 넘어가는 경우는 많이 없더라구요. 정밀한 계산을 요하지 않는 이상 말이죠..)
또한 unsigned를 int, char, long 앞에 붙이면 양숫값만 가지는 형태를 가지게 됩니다.
(long long 형태도 있어요! 8byte입니다)
4. 실습
다음의 출력 결과를 예측해 보세요
#include <stdio.h>
int main() {
int a = 0, b;
int c = 1;
b = c + a + 1;
printf("%d \n", c);
a = a + b;
b = c - a;
c = a * b; // *는 곱셈기호 입니다
printf("%d", a+b+c);
}
정답은?
1
0
그냥 복잡한 문제이지만, 요정도만 알아도 기본 개념은 대충 잡힌 거에요!
슬슬 코드를 보는 눈이 익숙해졌으면 좋겠습니다.
이제는 코드에 익숙해질 필요가 있어요!
배운 개념을 통해서 스스로 실습을 해보는 것도 좋겠습니다.
요즘에 개념을 다시 정리하는 포스팅을 하고 있는데
확실히 개념이라 그런지 내용이 꽤 많습니다.
머리에는 다 들어있는데, 끄집어내서 표현하려고 하니 어려운 느낌?
앞으로는 더 열심히 포스팅해야겠습니다!
'IT > C' 카테고리의 다른 글
[C] Main 함수 (0) | 2022.12.27 |
---|---|
[c][알고리즘] n-Queen (0) | 2022.12.26 |
[C] include (0) | 2022.12.26 |
[C] printf 함수 (0) | 2022.12.26 |
댓글