챕터 소개 / Python, Java 등에서 찾아볼 수 있는 코딩 구조와 C 언어
1) 컴파일

- 컴파일이란 소프트웨어 소스코드가 다른 소스코드로 변환되는 과정을 말합니다. 일반적으로 C / C++ 로 만들어진 소스코드는 컴파일 과정을 거쳐 어셈블리어 소스코드로 변환이 됩니다.
2) 빌드

- 빌드란 소프트웨어 소스코드를 실행파일로 만드는 과정을 말합니다. 빌드를 통해 어떤 프로그램 소스코드가 실행될 수 있으며 빌드에는 컴파일 과정이 포함됩니다
3) 버그

- 버그란 프로그램이 프로그래머가 설계한 의도대로 동작하지 않는 현상을 말합니다.
4) 디버그 / 디버깅

- 버그를 수정하는 일을 디버그한다. 혹은 디버깅이라고 말합니다.
5) 단항 연산자의 위치에 따른 결과의 차이
- 단항연산자는 앞에 있냐 뒤에 있냐에 따라 코드 진행에 약간의 차이가 있습니다. 이를 이해하기 위해서는 값이 어떻게 만들어지는지에 대해 알아야 하는데요. 일반적으로 단항연산자가 앞에 있다면 값이 만들어진 이후에 기존 변수에 값이 할당되며 단항연산자가 뒤에 있다면 기존 변수의 값이 만들어지고 기존 변수에 값이 +1 된 이후 할당됩니다.
6)참 / 거짓에 관하여

- C / C++ 는 특이하게도 거짓 이 0 이며, 참은 0이 아닌 모든 값이 참이 됩니다. 즉 어떤 숫자 값이 참 / 거짓을 가질 수 있다는 것이죠. 이것은 컴퓨터의 기계적인 원리를 그대로 활용하기 때문에 그렇습니다.어셈블리 언어나 기계에서는 어떤 값의 참 거짓을 판단하는 데는 0이라면 거짓이며, 0이 아니라면 모두 참이라고 판단하게 됩니다. C / C++ 에서는 이런 속성이 그대로 남아 있어 참 / 거짓을 판단하는데 한 번 더 생각할 문제가 있습니다. 이를 Java 등 다른 언어에서 동일한 코드를 통해 확인할 수 있습니다.
*더 알아볼 내용
- Java 소스코드에 나오는 boolean 자료형은 다음 '더 많은 자료형' 에 대해 배울 때 상세히 배우게 됩니다
7) while( ... ) { ... }

- while 구문은 for 라는 구문과 마찬가지로 반복을 할 수 있는 구문입니다. for 와 while 은 서로가 할 수 있는 일을 동일하게 할 수 있습니다. 어떤 경우에는 while 을 쓰는 게 편하지만 대부분의 경우에는 for 구문을 쓰는 게 훨씬 편합니다. while 구문에 대해 간단하게 알아보겠습니다. 대부분 for 구문을 능숙하게 쓴다면 while 구문에 대해서는 특별한 연습이 없어도 능숙하게 다룰 수 있게 됩니다.
8) switch( ... ) { ... }

- switch 구문은 if 절과 같은 조건구문입니다. 다만 조건구문에 해당하는 조건을 넣는 소괄호 ( ) 안에 변수를 집어넣을 수 있으며 해당 변수의 값에 따라 알맞은 case 구문으로 분기하게 됩니다. 알맞은 case 구문은 break; 를 만나기 전 까지 지속적으로 실행되므로 break; 구문을 각각의 case 구문이 끝난 이후에 꼭 집어넣어 주어야 합니다
9) 변수의 유효범위 #1

- 변수에는 각각의 변수가 갖고 있는 유효범위가 있습니다. main 함수 바깥의 변수는 전체적인 유효범위를 갖습니다
10) void

- void는 함수가 리턴을 하지 않아도 되게 해주는 타입
11) 변수의 유효범위 #2

- 유효범위의 두 번째 규칙은 브라켓과 관련되어 있습니다. 이 유효범위는 변수가 포함하고 있는 가장 가까운 브라켓(중괄호, { })을 기준으로 유효범위를 갖습니다. 브라켓은 if 나 switch 혹은 for, 함수의 몸통을 만들어주는 역할도 하지만 이 브라켓으로 인해 변수는 자신의 변수의 유효범위라는 것을 갖게 됩니다.
-
중요 브라켓(중괄호 {})에 묶여있는 범위내에서만 변수는 묶인다.
ex)
main () {
value1 = 100;
{
value1 = 150;
printf("value1 :%d", value1);
}
printf("value1 : %d", value1);
}
의 결과는
value1 : 150
value1 : 100
증감자 관련 참고내용 :
value ++ => 선행 계산후 value값을 1 증가시킨다
++ value => value 값을 1 미리 더한 후 후행 계산 실행
ex)
int v[5] = {0, 1, 2, 3, 4];
int index = 2;
v[index++] = 10;
일 경우에 배열변수 v 에 저장된 값을 차례대로 출력하면 어떤 값이 나올까요?
int v[5] = {0, 1, 2, 3, 4];
int index = 2;
v[++index] = 10;
이 경우에 v 배열의 값은 어떤 값이 출력될까요?
sol)
1) 0, 1, 10, 3, 4
2) 0, 1, 2, 10, 4