오늘도 한 걸음 내딛으려는 여러분들께 박수를 보냅니다.
아직까진 여러분이 뭘 하는지도 모르겠는데 일단 따라하는 일들이 많을 거에요.
무릇 거의 모든 배움이 그렇죠.
가벼운 마음으로 시작해봅시다.
변수는 데이터를 저장하는 메모리 공간입니다.
새로운 소스 파일 추가하기
https://jartlife.tistory.com/100
이전 포스팅에서 프로젝트를 생성하고 소스 파일을 추가하는 법은 익혔을 것입니다.
매번 작성했던 소스 코드들이 기록에 남는 편이 나중에 '아~ 이만큼 공부했구나' 하며 뿌듯해지기 좋기 때문에
작성했던 소스 코드들은 따로 저장합니다.
기존에 있던 소스 파일을 마우스 오른쪽 클릭하여 "제거(V)"를 눌러줍니다.
"제거(R)"는 프로젝트에서만 제외되고 실제 파일은 삭제되지 않는, 딱 우리가 원하는 옵션입니다.
만약 소스 코드가 꼴도 보기 싫어서 기록으로도 안 남길 거라면 "삭제(D)"를 눌러주시면 되겠습니다.
미니멀리즘 추구자나 디스크 공간이 먼지 만큼조차 남지 않은 분들도 마찬가지로 "삭제(D)"를 눌러주세요.
그 외의 분들은 "제거(R)"를 눌러주시면 되겠습니다.
그리고 새롭게 소스 코드를 추가합니다.
지난 번에 했던 대로, 맨 위의 "C++ 파일(.cpp)"를 골라줍니다.
밑의 이름 란에서 이름은 "1. 변수 선언 및 초기화"로 지정해주시고, 확장자는 .cpp인 채로 두어도 괜찮지만 가급적 .c로 바꿔주세요.
우리는 C로 코딩을 할 것이니까요. :D (C++는 C를 포함하는 관계입니다.)
이렇게 소스 파일이 정상적으로 추가 되었다면 성공입니다.
변수 선언하기
#include <stdio.h>
int main()
{
return 0;
}
|
cs |
변수를 선언해보기에 앞서, 앞으로 작성하는 코드들은 이미지가 아니라 위처럼 스크립트로 보여드릴 것임을 알려드립니다.
저 위에 적혀있는 것들은 우리가 항상 마주하게 될 틀입니다.
새로운 소스 코드를 추가할 때마다 위 코드는 기본적으로 작성해주세요.
#include <stdio.h>는 전처리기라 부르고, int main() { ... } 는 메인 함수라 부릅니다.
나중에 깊이 알려드릴 기회가 있겠죠.
잠깐 곁다리로 알려드리자면, 전공생 친구들은 프로그래밍 과제를 할 때, 시작하자마자 위 코드를 5초 만에 적은 뒤, "어... 이제 어떻게 해야 하지" 하고 30분 동안 멍때리기를 시작합니다.
그러다가 어떠한 아이디어가 번뜩이면 코드를 적는데, 중간에 막히고서는 "아, 이거 아니잖아." 하고 다시 지우는 일이 다반사지요.
여러분들도 앞으로 그 과정에 설 것입니다.
결국 나중 가면 시작부터 코드가 술술 나오게 되어 있습니다, 막히는 건 변함없지만.
#include <stdio.h>
int main()
{
int num;
return 0;
}
|
cs |
자, 한 줄이 추가되었습니다.
int num;
이라는 부분이지요.
띄어쓰기를 기점으로 앞은 자료형(Type), 뒤는 변수의 이름(Name of Variable)인데요.
아래와 같이 생각하시면 됩니다.
사람 홍길동;
개 노랑이;
학교 서울대학교;
이와 같은 형태를 보이는 것이 변수 선언(Variable Declaration)입니다.
자료형은 그 변수가 어떤 종류의 변수인지를 알려줍니다.
그래서 위 문장들은 "어떤 종류의 누구!" 라고 "선언"하는 문장들이지요.
사람 종류의 홍길동이 있다고 선언하고,
개 종류의 노랑이가 있다고 선언하고,
학교 종류의 서울대학교가 있다고 선언한 겁니다.
int num;
이제 이것이 int 종류의 num이라는 이름을 가진 변수를 선언한 것임을 아시겠죠?
int | 정수 자료형 ex) 1, 2, 3 |
double | 실수 자료형 ex) 0.0, 1.23, 4.5678 |
char | 문자 자료형 ex) 'a', 'b', 'c' |
다른 자료형들은 얼마 안 가 또 다룰 예정이니, 지금은 간단하게 이 정도만 맛봐봅시다.
int는 정수를 나타내는 integer의 준말이고, char는 문자를 나타내는 character의 준말입니다.
double은 왜 double일까요? 실수를 나타내는 real number의 준말로 real이라 할 법도 한데요.
그것은 컴퓨터개론의 극악무도한 첫 관문, 부동 소수점 표현법으로 넘어가게 됩니다.
여러분들도 언젠가 만나야 하니 기대하세요.
변수 초기화하기
#include <stdio.h>
int main()
{
int num = 10;
return 0;
}
|
cs |
코드가 조금 바뀌었습니다!
어디가 바뀌었을까요?
8줄 밖에 안 되고, 그 중에 두 줄은 빈 줄인 코드이니 금방 찾으실 거라 믿습니다.
네, 여러분들이 생각하신대로
int num;
이었던 부분이
int num = 10;
가 되었습니다!
간단하게 생각하시면 됩니다.
"int 종류의 num이라는 변수가 있는데, 그 초기값이 10이다." 라고 해석하시면 되겠습니다.
우리가 한 행위는 초기값을 명시한 것입니다.
초기화한다고 하죠.
그러면 int num;은 변수의 선언이고
int num = 10;은 변수의 초기화겠네요?
아마 지금이 여러분들에게 가장 명료하게 개념을 전달해야 하는 때가 아닌가 싶습니다.
변수의 선언과 초기화는 항상 동시에 이루어집니다.
무슨 일이 있어도 변수가 선언되면, 초기화가 됩니다.
변수 선언은 즉 초기화, 변수 선언 = 초기화입니다.
변수 선언과 초기화는 불알친구라 생각하시면 되겠습니다.
그런데 하나 알아두어야 할 것이 있습니다.
아까 "초기값을 명시" 했다고 했죠?
우리가 따로 초기값을 명시하지 않으면 컴퓨터가 임의로 초기값을 지정합니다.
컴퓨터는 결벽증이 있어서, 변수라는 상자가 데이터 없이 비어있는 꼴을 못 봅니다.
초기화 개념이 생각보다 중요해서, 나중에 발목잡히지 않으시려면 명시적 초기화를 하지 않을 경우 컴퓨터가 임의로 초기화해준다는 점을 알고 계셔야 합니다.
자, 다시
int num = 10;
이 문장을 여러분들은 쉽게 해석하실 수 있겠죠?
int 자료형의 변수 num을 10이란 값으로 초기화했습니다.
변수의 선언이자 초기화입니다.
int num;
이 문장은 int 자료형의 변수 num을 선언했지만, 따로 초기화하지는 않았습니다.
이럴 경우 초기화는 컴퓨터의 몫이 되며, 우리가 듣도 보도 못한 이상한 값이 들어있게 됩니다.
저는 예전에, 계산기를 구현하는 과제를 할 때 초기화가 올바로 이루어지지 않아 1*2*3*4*5가 1200만이 나오는 경험을 해본 적이 있습니다.
그래서 보통, 변수는 항상 선언과 함께 직접 초기화하라는 조언이 따릅니다.
초기화를 게을리하지 마세요.
심지어 Visual Studio에서도 초기화 하지 않은 변수는 경고합니다.
변수를 초기화하지 않는 것은 만악의 근원입니다.
여러분의 공부를 도와주시는 분들이 여러분들께
"변수를 반드시 초기화해라." 라고 말한다면, 그 사람은 정말로 믿을 수 있는 선생님입니다.
꼭 감사의 절을 올리세요.
변수를 여러 개 선언해보기
#include <stdio.h>
int main()
{
int num = 10;
double pi = 3.141592;
char ch = 'c';
printf("num : %d\n", num);
printf("pi : %lf\n", pi);
printf("ch : %c\n", ch);
return 0;
}
|
cs |
이번에는 변수를 여러 개 선언해보았습니다.
printf 안에 %d, %lf, %c라는 이상한 친구들이 있지만 아직은 다루지 않기로 해요.
각자 뒤에 있는 num, pi, ch와 연결된다고 보시면 됩니다.
\n은 지난 글에서 보았죠?
\n은 출력 시에 줄넘김 역할을 해줍니다.
코드 내에서 엔터키를 눌러봤자 코드가 다음 줄로 옮겨간 것 밖에 안 되기 때문에,
출력 시에 줄넘김을 하고 싶다면 엔터키를 누르는 것이 아니라 \n을 적어주어야 합니다.
사람 홍길동을 부를 때 "길동아~" 하고 부르지 "사람아~" 하고 부르지 않듯,
변수에 접근(Access)할 때도 이름을 불러주어야 합니다.
num, pi, ch로 접근해야 하는데 int, double, char을 적어놓고 "도대체 뭐가 문제지?" 하지 맙시다.
최종 소스 코드는 위에 있는 코드와 같습니다.
이대로 저장해두고, 다음 번엔 또 새로운 소스 코드를 작성해봅시다.
실행법은 있지 않았죠?
Ctrl + F5를 눌러서, 혹은 메뉴 바의 "디버그(D)"의 하위 항목인 "디버그 하지 않고 시작(H)"를 눌러서,
위와 같이 출력되는지 확인해 주세요.
위의 세 줄의 출력이 저와 같지 않다면... 어딘가 잘못 하신 겁니다.
그런 경우에는 글을 천천히 다시 읽으면서 복습해봅시다.
그리고 가시는 길에, 주제인 "변수는 데이터를 저장하는 메모리 공간입니다." 를 꼭 다시 상기하세요.
'C | C++ > C' 카테고리의 다른 글
[C] 6. printf를 좀 더 잘 써봅시다. <필드폭 및 소수점 조정, 이스케이프 문자> (1) | 2022.07.05 |
---|---|
[C] 5. 입출력은 프로그램의 근본입니다. <printf, scanf> (0) | 2022.07.05 |
[C] 4. 변수의 최댓값을 넘기면 무슨 일이 일어날까요? <오버플로우, 언더플로우, 랩 어라운드> (0) | 2022.07.03 |
[C] 3. 좀 더 다양한 종류의 변수를 선언해봅시다. <다양한 자료형> (0) | 2022.06.25 |
[C] 2. 올바른 이름을 적읍시다. <변수의 이름 규칙> (0) | 2022.06.25 |