변수가 편리한 이유
변수 선언 - 변수에 값을 대입 - 연산 - 연산 결과를 변수에 대입
변수라는 개념을 도입하면서 메모리의 주소를 직접 알 필요가 없어졌다.
프로그래머가 작업을 편리하게 할 수 있어졌다.
변수를 선언하는 법
int main(void)
{
int x;
int y;
int z;
x = 1;
y = 2;
z = x + y;
return 0;
}
int x;
- declaration(선언한다)
- 자료형을 입력하고 내가 사용하고 싶은 자료형의 이름을 입력하고 ;을 입력해 문장을 끝낸다.
- 정수 하나를 담을 만한 메모리 공간을 확보했고 메모리 공간을 x라는 변수를 통해서 접근할 수 있다는 의미.
- 변수 선언을 블럭(Body)안에서 맨앞에 하게 되어 있었는데 요즘은 코드 중간중간에 쓸 수 있다.
컴파일러가 프로그래머에게 더 자유를 부여하기 위해 바뀐 것이지만 오래된 컴파일러는 못 읽을 수도 있다.
자료구조, 알고리즘, 복잡한 프로그램을 만들 때는 미리 시작 부분에서 변수를 선언하는 게 편하다.
등호(=)
- assignment(할당하다, 대입하다)
- 기능을 수행하고 있는 연산자(operator) 중 하나 (연산자는 = + 등이 있다. 나중에는 연사자를 직접 만들어서 사용할 수 있다.)
- 왼쪽과 오른쪽이 같다는 뜻이 아니다. 예를 들어 x=1일 때, 숫자 1을 변수 x가 차지하고 있는 메모리에 값으로서 대입한다는 뜻이다.
- z = x + y 일 때 연산자 우선순위에 따라 더하기를 먼저 수행한다.
괄호를 따로 치지 않아도 (z=x)+y가 아닌 z=(x + y)로 수행한다.
Z의 값을 확인하는 법
1. 함수 printf()를 통해 콘솔창에 출력해본다.
2. Debug를 사용해서 메모리 내부에 있는 값을 들여다본다.
변수 이름 짓는 법
* 무조건 x,y,z로 지어야 하는 건 아니다. 내 마음대로 지어도 된다.
* 알파벳 대문자, 소문자, 언더스코어(_), 숫자를 자유롭게 섞어서 사용할 수 있다.
* 특수기호는(#$%^&*) 사용할 수 없다.
* 숫자는 맨 앞에는 올 수 없고(int 123love) ,맨 앞만 아니면 아무 곳에 나 사용 가능하다.
* 대문자와 소문자를 구분해서 다른 것으로 인식한다.(int x와 int X는 다른 변수)
* 같은 이름을 가진 변수가 하나의 영역(하나의 Body)안에 들어올 수 없다.({int x int x})
* 변수 이름 사이에 빈칸이 있으면 안 된다.(그래서 보통 빈칸 대신 언더스코어를 넣는다.)
* C프로그램에서 특별한 용도로 쓰려고 정해놓은 키워드와 예약어는 변수 이름으로 쓸 수 없다.
키워드와 예약어로 사용되는 단어들은 변수명으로 사용 할 수 없다.
비주얼스튜디오의 경우 키워드로 사용되는 단어는 파란색으로 표시 해준다.
언더바(_)붙은 친구들은 예약어로 #include 안해주면 변수처리 가능하긴 하지만 그래도 변수명으로 사용하지 않기를 권장한다.
* 이름을 63글자까지 길게 지을 수 있다. 하지만 프로그래머가 보기 편하게 간결하게 지어주는 게 좋다.
int my_lover123;
int UN_village;
int house;
변수선언에서 C언어의 편의 장치
- 쉼표(,) 사용해서 동시에 선언하기
int x, y, z;로 입력해도 int x; int y; int z;로 읽는다.
단 쉼표를 이용해 동시에 선언하는 것은 같은 자료형일 때만 가능하다.
- 변수 선언하면서 동시에 값 대입하기
메모리 할당 값 선언하면서 값을 바로 대입해도 된다.
int x=1, y=2, z=x+y;로 입력해도 int x, y, z; x=1 y=2 z=x+y 로 읽는다.
z같이 연산하는 부분은 따로 쪼개서 구현하는게 편하다.
int x=1, y=2; int z=x+y 혹은 int x, y, z; z=x+y
'프로그래밍언어 > C언어' 카테고리의 다른 글
[C language] 주석 다는 방법 (0) | 2020.11.18 |
---|---|
[C language] printf() 함수의 기본적인 사용법 (0) | 2020.11.14 |
[C language] C의 해부학 (0) | 2020.11.14 |
[C language] 비주얼 스튜디오 코드로 C언어하기(+ C++맛보기) (0) | 2020.11.14 |
[C language] 컴파일러와 링커 (0) | 2020.11.13 |