
안녕하세요, C 프로그래밍 언어 열번째 강의입니다.
오늘은 Chapter 9에서 배운 연산자를 실습하겠습니다.
이번 시간만큼은 직접 코드를 작성하고, 컴파일 해보시길 바랍니다. 반드시!

일단 위의 코드를 그대로 본인의 비주얼 스튜디오에 작성해보세요.
작성이 완료되셨나요? 이제 한 줄 한 줄 해석해보겠습니다.
가장 먼저 Chapter 7에서 배운 변수 선언을 대입 연산자를 이용해 변수 초기화와 동시에 했습니다.
변수 x에는 7이 대입되었고, 변수 y에는 4가 대입되었습니다.
그리고 Chapter 6에서 배운 printf 함수입니다. 잠깐 복습 겸 우리가 작성한 첫번째 printf 함수를 살펴볼까요.
첫 번째 전달인자는 겹따옴표 ""안의 내용입니다. 이 전달인자는 실제 화면에 출력하고자 하는 내용입니다.
그 중 %d은 서식 지정자이며, ""안에서 첫번째로 나타난 서식 지정자 %d는 printf 함수의 두 번째 전달인자를 해당 위치에 출력하겠다는 의미입니다.
그리고 ""안에서 두번째로 나타난 서식 지정자 %d는 printf 함수의 세 번째 전달인자를 해당 위치에 출력하겠다는 의미입니다.
마찬가지로 ""안에서 마지막으로 나타난 서식 지정자 %d는 printf 함수의 네 번째 전달인자를 해당 위치에 출력하겠다는 의미입니다.
그리고 ""안에서 /n은 줄바꿈을 의미합니다. 이에 대해서는 추후에 다시 언급하겠습니다.
지금은 ""안에 \n을 넣는다면 줄바꿈이 된다고 이해하시면 충분합니다.
일단 슬라이드의 코드를 직접 작성하고 컴파일 (ctrl+F5)를 해볼까요.

컴파일 결과가 출력되었습니다.
첫번째 printf 함수는 덧셈 연산자입니다. 마지막 전달인자에서 x+y가 계산이 되고, 세번째 서식 지정자 위치에서 해당 값이 출력이 되었습니다.
7+4=11이 정상적으로 출력되었습니다.
뺄셈, 곱셈 연산자도 정상적으로 출력되었습니다.
하지만 네번째 printf 함수에서는 무엇이 출력이 되었나요?
실제 7/4는 1.75입니다. 하지만 모종의 이유로 소수점 이하는 생략된채 1만 출력이 되었습니다.
이는 변수의 자료형, 서식 지정자와 연관이 있으며, 조만간 설명해드리겠습니다.
마지막 연산자는 나머지 연산자입니다.
나머지 연산자는 말 그대로 나눗셈을 하고 나머지를 계산하여 출력합니다.
7/4를 계산하였을 때, 7=4*1+3, 즉 몫은 1이며 나머지는 3으로 계산할 수 있습니다.
따라서 3을 정상 출력하였습니다.
이때, 코드를 다시한번 보실까요? 마지막 printf 함수에 "%d%%%d=%d\n"라고 작성하였습니다.
%가 과도하게 많죠? printf 함수의 ""안에서 %를 마주치면 뭔가 특별한 것이 있을 것이라고 컴파일러는 판단합니다.
이로인해 %d가 문자 그대로의 %d가 아닌 서식 지정자로 인식이 됩니다.
하지만 문자 그대로의 %를 입력하고 싶다면, %%을 작성하시면 실제 출력화면에서는 %만 출력됩니다.
이러한 과정도 추후에 다시 설명하겠습니다. 지금은 연산자 실습시간이죠.

일단 위의 코드를 그대로 본인의 비주얼 스튜디오에 작성해보세요.
작성이 완료되셨나요? 이제 한 줄 한 줄 해석해보겠습니다.

후위 증감 연산자와 전위 증감 연산자는 주의깊게 사용해야합니다.
후위 증가 연산자의 경우, 모든 계산이 끝나고 다음 줄로 넘어갈 때 계산이 이루어집니다.
예를 들어, 현재 x=7이라고 변수 선언과 동시에 초기화를 하였습니다.
이를 후위 증가 연산자를 이용해, printf("%d\n", x++);라고 작성하였습니다.
이 때, x는 증가하지 않은채 수식이 진행됩니다. x는 그대로 숫자 7인 채로 진행됩니다.
따라서 printf 함수가 끝날 때까지도 x는 7이며 실제 컴파일 화면에서도 7을 출력합니다.
하지만 printf 함수가 끝나고 다음 줄로 넘어갈때 후위 증가 연산자는 작동합니다.
이 순간에 후위 증가 연산자가 x를 1 증가시켜 x=7+1=8로 만듭니다.
그렇기때문에 두번째 printf("%d\n", x)에서 x는 8이 되어 있었고, 실제 컴파일 화면에서도 8이 출력됩니다.
하지만 전위 증가 연산자의 경우는 다릅니다.
전위 증가 연산자의 경우 후위 증가 연산자와 달리 가장 우선적으로 변수를 1 증가시킵니다.
따라서 세번째 printf 함수에서 x는 8이였지만, 전위 증가 연산자로 인하여 곧바로 x=8+1=9가 되었고, 컴파일 화면에서 9가 출력됩니다.
그리고 이미 연산이 끝났기 때문에 세번째 printf 함수가 끝나도 변수 x는 변동이 없습니다.
이와 마찬가지로 후위, 전위 감소 연산자도 진행됩니다.
작성한 코드와 컴파일 화면을 잘 비교하며 공부해보세요.

비교 연산자 부분입니다.
일단 위의 코드를 그대로 본인의 비주얼 스튜디오에 작성해보세요.
작성이 완료되셨나요? 이제 한 줄 한 줄 해석해보겠습니다.

지난 시간에도 말씀드렸이 비교 연산자의 결과값은 참(1) 혹은 거짓(0)입니다.
x=7이고 y=4입니다.
첫번째 수식 7==4(7과 4는 같다)라는 수식은 거짓입니다. 따라서 거짓(0)을 반환하고 실제 컴파일 화면도 0을 출력합니다.
두번째 수식 7!=4(7과 4는 다르다)라는 수식은 참입니다. 따라서 참(1)을 반환합니다.
세번째 수식 7>4(7은 4보다 크다)라는 수식은 참입니다. 따라서 참(1)을 반환합니다.
네번째 수식 7<4(7은 4보다 작다)라는 수식은 거짓입니다. 따라서 거짓(0)을 반환합니다.

논리 연산자 부분입니다.
일단 위의 코드를 그대로 본인의 비주얼 스튜디오에 작성해보세요.
작성이 완료되셨나요? 이제 한 줄 한 줄 해석해보겠습니다.

x = 1, 즉 논리 연산자 입장에서는 참을 뜻합니다.
y = 0, 즉 논리 연산자 입장에서는 거짓을 뜻합니다.
첫번째 수식 !x(x의 반대)는 참의 반대인 거짓(0)입니다.
두번째 수식 x&&y(x와 y 모두 참이다)는 y가 거짓이기 때문에, 거짓(0)입니다.
세번째 수식 x||y(x 혹은 y 중 최소 하나는 참이다)는 x가 참이기 때문에, 참(1)입니다.

복합 할당 연산자 부분입니다.
일단 위의 코드를 그대로 본인의 비주얼 스튜디오에 작성해보세요.
작성이 완료되셨나요? 이제 한 줄 한 줄 해석해보겠습니다.

복합 할당 연산자는 대입 연산자와 다른 연산자가 합쳐진 연산자입니다.
지난 시간에 설명했듯이 연산과 동시에 대입을 합니다.
첫번째 printf 함수를 보면 가장 초기 x값을 출력합니다. 숫자 7입니다.
덧셈 할당 연산자를 실행합니다.
x += y를 풀어 설명하자면, x와 y를 더하고, 그 결과값을 다시 x에 대입한다는 말과 같습니다.
따라서 x는 7이고 y는 4이기때문에 7+4=11이 다시 x에 대입되어 x=11이 됩니다.
그렇기에 두번째 printf 함수의 변수 x 출력값이 11이 됩니다.
마찬가지로 x -= y를 풀어 설명하자면, x와 y를 빼고, 그 결과값을 다시 x에 대입한다는 말과 같습니다.
따라서 x는 현재 11이고 y는 4이기때문에 11-4=7이 다시 x에 대입되어 x=7이 됩니다.
그렇기에 세번째 printf 함수의 변수 x 출력값이 7이 됩니다.
다시 x *= y를 풀어 설명하자면, x와 y를 곱하고, 그 결과값을 다시 x에 대입한다는 말과 같습니다.
따라서 x는 현재 7이고 y는 4이기때문에 7*4=28이 다시 x에 대입되어 x=28이 됩니다.
그렇기에 세번째 printf 함수의 변수 x 출력값이 28이 됩니다.
이런 식으로 /=와 %= 를 유추할 수 있습니다.
오늘 실습은 여기까지 마무리 짓겠습니다.
반드시 직접 손으로 코드를 작성해보고 컴파일 해보시는 시간을 가지시길 바랍니다.