main 함수 해부하기 - 정수형

이제 main() 함수 코드들을 하나씩 따져볼건데요.
가장 기본이 되는 데이터 타입 (data type) 중 정수형(integer)에 대해서 먼저 공부해 보지요.



강의들은 모두 무료입니다. 단, 저작권은 키클 코딩랩 에 있으며, 무단 복제 및 배포를 엄금합니다.
이를 어길 시, 본 사이트의 서버가 미국에 있으므로, 미국법에 의해 처벌될 수도 있습니다.




정수 (integer) 데이터 타입 (data type)

먼저, 이전 강의 첫 대면..main 함수에서 했듯이, 원하는 폴더/디렉토리를 만들고 gedit 문서 편집기를 이용하여 "lec2_main.c"나 "lec2_main.cpp"라는 이름의 파일을 만들어 볼게요.
강의 첫 대면..main 함수에서 main 함수가 어떻게 생겼는지도 봤었지요?
아래처럼, 새로 만든 파일에 main 함수 코드를 다시 한 번 작성해 보지요.

lec2_main.c 혹은 lec2_main.cpp
int main(int argc, char *argv[ ]) {
}

코드를 들여다 보면, 가장 먼저 보이는 것이 무엇인가요? 바로 "int"라는 것이지요?
정수형 데이터 타입을 의미하는 것인데요. 자세히 들여다 볼까요?

C/C++과 같은 프로그래밍 언어 (Programming Language)는 기본적으로 컴퓨터를 이용하여 빠르고 정확한 "계산"을 하고자 만들어 진것이예요. 계산을 하려면, 무엇이 필요할까요? 바로 숫자/수 이지요. 예를 들어 더하기(+) 연산을 하고자 한다면, 무엇에 무엇을 더할지를 알아야 되지요? 그리고, 그 무엇이라는 것이 결국에는 1, 2, 56.2, -43.0 등과 같은 수들을 의미하는 것이지요.
프로그래밍 언어에서는 각 수들의 특성을 고려해서 분류를 하고 있구요, 각 분류들을 데이터 타입 (Data Type)이라고 부른답니다. 그리고, "int"는 바로 정수 (integer) 데이터 타입을 의미하는 것인데요, 아래에서 자세한 설명을 할게요.

[문법] 정수형 (Integer)

위 설명은 문법 노트에서도 볼 수 있다는 것 잊지 마세요.




비트 (Bit)와 바이트 (Byte)

정수형은 4 바이트 (byte)의 실제 컴퓨터 메모리 공간에 구현된다고 했는데요. 메모리 저장 공간의 단위에 대해서 공부하고 넘어가도록 하지요. 아래 설명들도 역시 문법 노트에서 찾아 볼 수 있답니다.
먼저, 비트 (bit)에 대해서 알아보지요.

[문법] 비트 (Bit)

비트에 대해서 알아보았으니, 이제 바이트 (byte)에 대해서 공부해 볼까요?

[문법] 바이트 (Byte)

바이트에 대해서 이해가 되었나요?
C/C++은 정수(integer)를 메모리 상에 4 바이트를 이용하여 구현한다고 했으니, 메모리에 구현된 정수 예를 하나 그림으로 표현하면 아래와 같이 32 비트의 메모리 공간으로 그려지겠죠?

10100001
01101011
10100001
01101011

이 지점에서 질문이 하나 생길거예요. 메모리에 구현된 어떤 수는, 위 그림처럼 왜 모두 0이나 1의 조합으로 나타나는지. 이유는 우리가 사용하는 51이나 1045등과 같은 수들은 모두 십(10)진수로 표현된 수들이구요, 컴퓨터는 이 십진수들을 이(2)진수로 바꿔서 표현한 후 저장하기 때문이랍니다.

[문법] 메모리에 값이 저장되는 방식




변수 (Variable)의 선언 (Declaration)과 할당 (Assignment)

이제 우리도 직접 정수를 코딩해 볼까요?
어떤 계산을 하고자 한다면, 계산의 대상이 되는 수를 메모리 상에 저장해 놓아야 겠죠? 정수형(integer)은 위에서 알아 봤듯이, 4 바이트의 메모리 공간에 저장이 되는 것이구요.
이렇게 메모리 상에 어떤 수를 저장하는 작업은 "변수의 선언과 할당"을 통해서 이루어 진답니다. 아래 문법 노트에서 자세하 알아볼까요?

[문법] 변수(Variable)의 선언(Declaration)

변수를 어떻게 선언하고 값을 할당하는지 이해가 되었나요? 그렇다면, 실제로 코딩을 해 볼까요?
우리가 main 함수를 코딩했던 "lec2_main.c" 혹은 "lec2_main.cpp" 파일로 가보세요. 그리고, 아래 줄2처럼 main 함수의 "{ }" 안에 '정수 3을 담는 메모리를 확보하고 그 이름을 myvar라고 하라'는 의미의 코드를 작성해 보지요.
C/C++ 코드를 작성할 때, 몇가지 경우를 제외하고 어떤 코드를 완성하면 반드시 ";"를 끝에 붙여야 한다는 점 잊지 마세요!
줄2에서 코드 맨 앞에 빈 공간을 넣은 이유는 단지 코드를 보기 좋게 작성하기 위해서 입니다. 맨 앞에 빈 공간을 넣는 특별한 이유가 있는 Python과는 다른 점이지요.

lec2_main.c 혹은 lec2_main.cpp
int main(int argc, char *argv[ ]) {
	int myvar = 3;
}

코딩을 마쳤다면, 강의 첫 대면..main 함수에서 했던 것처럼, 파일을 저장하고 gedit 편집기 닫기를 하세요.
이제, 컴파일을 해 볼게요. 아래처럼 "gcc lec2_main.c"나 "gcc lec2_main.cpp"를 터미널에서 실행해 보지요.

.../my_folder$ gcc lec2_main.c
.../my_folder$

아무 에러 메세지도 없이 컴파일이 잘 끝났지요? 그렇다면, 이번 강의는 이쯤에서 마무리하도록 할게요.

강의에서 작성된 소스 코드 (source code)를 다운받으려면, 다음 링크를 클릭하세요: lec2_main.c, lec2_main.cpp

혹시, 이해가 잘 안되는 부분에 대한 질문이 있거나 다루어 줬으면 하는 주제가 있으면, 화면 오른쪽 하단에 "질문하기" 버튼을 이용해 주세요.






발자취

2019-09-11 "키클 코딩랩 - 미국 공학박사 아빠의 코딩 연구소"로 이름 변경
2019-06-28 코딩 교실 공개
2019-03-18 코딩 교실 제작 시작

바로가기
Python 배움터
C/C++ 배움터
About
Contact
Privacy Policy
강의목록
질문하기
처음으로