본문 바로가기
C언어

야메 C언어 강좌: 4-1. 계산을 해보자(1)

by 케찹이 2020. 4. 22.

사실 컴퓨터가 처음 개발되었을 때, 우리가 익히 알고 있는 처음으로 개발된 '애니악'이란 컴퓨터는 전쟁통에 미사일의 조준점을 계산하기 위해 개발이 되었습니다. 즉 애초에 컴퓨터는 계산기의 기능으로 만들어 다는 것이죠. 그럼 우리도 한번 여러가지 계산을 통해 우리의 C언어 능력을 향상시켜 봅시다. 

 

일단은 기본적인 수식으론 우리가 흔히 알고 있는 더하기, 빼기, 곱하기, 나누기가 있죠. 이런 수식들은 산술 연산식이라고 부릅니다. 그럼 컴퓨터에서 이를 어떻게 표시할까요? 밑의 코드에서 살펴보도록 하겠습니다. 

#include<stdio.h>

int main(){
	int a = 10;
	int b = 2;
	
	printf("a + b = %d\n",a+b);
	printf("a - b = %d\n",a-b);
	printf("a * b = %d\n",a*b);
	printf("a / b = %d\n",a/b);
	printf("a % b = %d\n",a&b);
	
	return 0;
}

위에서는 다섯개의 printf함수로 우리가 자주 사용하는 다섯가지 계산식을 써보았습니다. 일단 산술 연산자는 기본적으로 다섯가지를 사용합니다. '+', '-', '*', '/', '%' 이렇게 각 의미는 더하기, 빼기, 곱하기, 나누기, 나머지(?) 이렇게 있습니다. 곱하기와 나누기의 개념은 같지만 부호는 컴퓨터에서 저렇게 '*', '/'로 표현이 됩니다.  그외에 살펴볼 연산자는 '%' 입니다. 이 연산자를 사용하면 두 값의 나머지 값을 나타나게 됩니다. 위의 코드에서 a % b의 값은 0을 출력하게 될것 입니다. 생각보다 이 연사자는 굉장히 유용하게 쓰이며 여러분들이 잘 기억하고 있으면 좋겠습니다. 

위 코드의 결과는 밑과 같이 나타납니다. 잘 살펴보시기 바랍니다.

조금 이상한 점을 발겼하셨나요? 바로 맨밑줄의 출력값이 %연산자를 출력하지 않았습니다. 우리가 %를 printf함수에서 %d, %f등으로 많이 사용하기 때문에 %만 적게된다면 이렇게 무시하여 출력하게 됩니다. '%'을 출력하기 위해선 특수부호 앞에 %하나를 더 붙여서 출력하셔야합니다. 그 외에도 특수분자들을 출력하기 위해선 해당 특수 문자 /이나 \값 등등의 값들을 출력하기 위해선 \값을 입력하셔야 합니다. 밑 코드는 백준의 10171번 고양이를 출력하는 문제인데 좋은 예시인 것같아서 빌려왔습니다. 한번 복붙하신 다음에 출력을 해보세요. 

#include<stdio.h>
int main(){
	printf("\\    /\\ \n");
	printf(" )  ( ') \n");
	printf("(  /  ) \n");
	printf(" \\(__)| \n");
	
	return 0;
} 

 

그리고 하나 더 나누기 수식에 대해서 조금 더 얘기 하여고 합니다. 처음 코드에서 a와 b의 값을 조금 다르게 해서 나누기 식을 진행시켜보려합니다. 

#include<stdio.h>

int main(){
	int a = 10;
	int b = 3;
	
	printf("a / b = %d\n",a/b);
	
	return 0;
}

10에서 3을 나누면 떨어지지 않죠, 그럼 결과값이 어떻게 나올까요? 우리가 알던데로 3.3333..값이 나올까요? 

결과값은 3이 나옵니다. 왜 그럴까요?  그건 바로 우리가 int라는 정수 변수를 사용하였기 때문입니다. a와 b 두 변수가 모두 정수 변수를 사용했기에 결과값도 정수가 나와야 합니다. 그 말은 변수가 실수 이면 결과값도 실수가 나온다는 의미이겠네요. 바로 이 개념을 적용해서 코드를 수정해 봅시다. 

#include<stdio.h>

int main(){
	float a = 10;
	float b = 3;
	
	printf("a / b = %f\n",a/b);
	
	return 0;
}

우리의 예상대로인 결과값이 나왔네요! 이렇듯 간단한 듯보여도 c언어에서의 산술 연산은 수학적인 개념과는 조금 차이가 있습니다. 

 

오늘의 강의는 일단 여기까지 해보겠습니다. 사실 강의를 한다면 굉장히 많은 부분들을 가르쳐드릴수도 있겠지만 여기까지 배운 여러분들 스스로 꽤 많은 개념들을 직접 코드를 통해서 깨달으실 수 있습니다. 여기까지 배운 내용으로 직접 코드들을 수정해보고 관찰하는 시간들을 가져보시기 바랍니다. 그리고 직접 코드를 수정하면서의 경험과 의문점들을 다 다음 강의에서 해결해 보도록 합시다.  

댓글