본문 바로가기

프로그래밍/C언어

[C언어] 변수와 연산자


기본적으로 수학에서 배운 +, -, *, /(나눗셈) 의 사칙연산이

C언어에서도 제공되고 있는데요.

이번글에서는 이 사칙연산에 대해서 알아봅시다.

우선 다음코드를 보도록 합니다.

-------------------------------------------------------------------------------

#include <stdio.h>

int main(void)

{

1+2;

return 0;

}

-------------------------------------------------------------------------------

자 여기서 1과 2의 덧셈 연산을 시도해보았는데요.

코드를 빌드한후 실행해봅니다.

해보셨나요? 그렇습니다. 저희는 1과 2의 합인 3을 원했는데 결과물은 아무것도 없습니다.

종료를 위한 계속할려면 눌러라 라는 말밖에 없죠.

여기서 잠깐 그럼 덧셈연산을 하지 않았나?라는 의문이 들텐데 빌드할때 문제없이 컴파일 되는것을 확인할수 있었을겁니다.

그럼 1과 2의 덧셈연산이 되었다는건데 무엇이 문제인가?

당연히 문제가 있습니다. 컴파일러인 VC++이 1과 2의 덧셈 명령을 받아서 덧셈은 했지만 그 이후에 다른 명령어가 없던 것이죠.

그러면 이 합을 실행화면에 보여주기 위해서 앞에서 어떤 함수를 배웠나요?

그렇습니다 printf()문을 써서 실행화면에 출력을 해보았습니다.

자 다시 해봅니다.

-------------------------------------------------------------------------------

#include <stdio.h>

int main(void)

{

printf(1+2);

return 0;

}

-------------------------------------------------------------------------------

해봅십시다. 당근 안됩니다.

printf()문에서 출력될수있는 문자열이나 숫자의 범위는 " "안에 있어야 하죠.

그래서 한번더 해봅니다.

-------------------------------------------------------------------------------

#include <stdio.h>

int main(void)

{

printf("1+2");

return 0;

}

-------------------------------------------------------------------------------

자 화면에 어떤결과가 출력될까요?

-------------------------------------------------------------------------------

1+2계속할려면 눌러라잉~

-------------------------------------------------------------------------------

이런 결과값인 3이 안나오고 1+2가 나옵니다.

기가찰 노릇입니다.

보신바와같이 C언어는 1+2를 넣었다고 해서 그거을 출력해주지도 연산을 해주지도 않습니다.

그에 마는 방법이 따로 있는거죠.

자 C언어적으로 생각해봅니다.

"1과 2를 덧셈을 해주고 그 값이 어디에다 두고서 그 값을 printf()문을 이용해서 화면에 출력하자."

1과 2의 덧셈한 값을 어디에다 둔다라.. 어디에다 둘까요? 그것은 메모리 입니다.

쉽게 얘기하면 그릇이라고 말하면 되겟네요. 1과 2의 합을 메모리에 담아두었다가 printf()문으로 출력이 가능한데요.

보통 이 메모리는 이름을 갖습니다. 그것을 변수라고 하는데요.

일단 보세요

a=1+2;

이것이 덧셈을 하는 방법입니다

이를 풀이하면 a라는 이름을 갖는 변수가 있는데, 1+2의 연산을 해서 그곳에다가 담아두겠다, 즉 값을 저장하겠다 라는 겁니다.

여기서 = 표시는 같다라는 의미가 아닌 대입연산자라고 해서 =을 기준으로 오른쪽에 있는 값을 =의 왼쪽에 있는 변수로 대입, 전달하겠다라는

의미입니다.

이 a라는 이름의 메모리 공간에는 다양한 값을 저장할수 있는데요. 이때문에 변수(변하는수)라고 부르는겁니다.

이와 대비대는 말로 상수라는것이 존재하는데 상수는 변하지 않는수, 즉 1이나 2와 같은 수를 의미합니다. 1은 1일뿐 2가 아닌거죠 ^^;

하지만 저 변수 a는 1이 될수도 있고 2가 될수 있습니다.

a=1;

a=2;

이렇게요.

하지만 여기서 주의할것!

무조건 a에다가 1과 2의 합을 저장할거라해서 a=1+2라 하시면 안됩니다. 그 이유는 a라는 변수를 사용할것이라 컴퓨터에 먼저 알려주지 않았기

때문이죠.

그래서 저것을 하기전에

int a;

라고 적어줘서 int는 '정수형'을 의미하는데 정수형인 a라는 변수를 쓸것이다. 라고 먼저 알려주어야 합니다.

자 이제 합을 넣는 방법도 알았으니 출력을 해보아야 겠죠?

-------------------------------------------------------------------------------

#include <stdio.h>

int main(void)

{

int a; //a라는 정수형 변수를 선언해서 나는 a라는 변수를 사용할것이라 컴파일러에 알려줍니다.

a=1+2; //a라는 정수형 변수에 1과 2의 합의 결과를 저장합니다.

printf("%d", a); //a에 저장되어있는 값이 3이라는 정수이므로 정수형 서식문자열인 %d를 이용합니다.

return 0;

}

-------------------------------------------------------------------------------

자. 이제 위코드를 작성후 코드를 실행해봅니다.

어때요 3이라는 글자가 출력이 되었나요?

참고로 a가 영어 a라고 해서 서식문자열을 %c로 사용하지 마십시오. 겉으로 보이는 a는 영어지만

그안에 실질적으로 들어있는 값은 a가 아니라 3인 정수니까요.

여기서 한가지 알아두어야 할 사항은 C언어에서는 a와 같은 변수선언을 할때

즉 중괄호 { }내에서 변수를 선언할 경우에는 변수의 선언문은 중괄호의 앞부분에 위치해야 합니다.

중간에서 변수를 선언할 경우에는 오류가 납니다.

그리고 변수의 초기화라는 것을 해줘야 하는데요.

변를 선언만 하고 초기화 즉, 정수형 변수라 선언을 해놓고서는 그 안에 아무런 값을 넣지않고

사용했을때는 쓰레기 값이 저장되어 그값이 쓰여지게 됩니다.

이것은 다음글에서 더 자세히 알아보도록 할게요 ^^.

저런식으로 변수에다가 그 값을 넣어서 변수를 출력하는방법이 있구요.

직접적으로 printf()에서 연산도 가능합니다.

-------------------------------------------------------------------------------

#include <stdio.h>

int main(void)

{

printf("%d", 1+2);

return 0;

}

-------------------------------------------------------------------------------

그럼 서식문자열 %d자리에 1+2라는 값이 들어가는것이죠.

다음글에서 실습을 해보도록 합니다.