본문 바로가기

Programming/C/C++

9번째, 산술연산자와 대입연산자

안녕하세요. 두다스입니다.
이번에는 산술연산자와 대입연산자에 대해 알아보겠습니다.

산술연산이라는 말 많이 들어보셨을텐데요, 더하기, 빼기, 나누기, 곱하기 등 말그대로 더하고 빼는 이런 연산이지요.
아래 사진은 산술연산의 예를 들어봤습니다.

위 사진의 소스를 설명하면
    printf("1 + 2 = %d \n", 1 + 2 );  // 1과 2를 더해서 3이 나오게 됩니다.
    printf("4 - 3 = %d \n", 4 - 3 );  // 4에서 3을 빼면 1이 나오게 됩니다.
    printf("3 * 2 = %d \n", 3 * 2 );  // 3과 2를 곱하면 6이 나옵니다.
    printf("7 / 3 = %d \n", 7 / 3 );  // 7을 3으로 나누면 2가 나옵니다.
    printf("7 / 3 의 나머지 = %d \n", 7 % 3 );  // 7을 3으로 나눈 나머지는 1입니다.

위에서 " +,-,*,/ " 등은 다 아실거라 생각되는데요.
맨 마지막 printf 문은 나머지를 구하는 겁니다. C언어에선 나머지를 구할때 '%' 라는 것을 쓰게 됩니다.
7을 3으로 나누면 몫은 2, 나머지는 1이 나오니까 7 % 3 을 하게되면 나머지가 1이 나오는거지요.

두번째로 대입연산자에 대해 알아보겠습니다.
대입연산이란 변수에 값을 대입하는 것을 말합니다. 대입연산자의 왼쪽에는 반드시 변수가 와야하고, 오른쪽에는 변수, 수치 또는 함수의 리턴값 등이 올 수 있습니다.
아래 사진은 대입연산의 예를 들어봤습니다.

위 예제를 보면 i에 2를 집어넣어 printf문으로 i의 값인 2를 출력시킵니다.
그 다음 i에 2+6의 값 8을 넣어 printf문으로 i의 값인 8을 출력시킵니다.
즉, i=2 는 2를 i에 넣는다. 라는 뜻이고 i=2+6 은 2+6을 i에 넣는다. 라는 뜻입니다.

여기서 한가지 의문점이 생길수도 있는데요
맨처음에 2를 집어넣어 2를 출력시킨 다음에 i에 2+6을 넣어 8이 나왔습니다.
근데 왜 두번째 printf문에선 2가 아닌 8이 나왔을까요?

그건 처음에 i에 2를 대입시켜 printf문으로 출력시켰는데
그 다음에 i에 2+6인 8을 대입시킨거나 마찬가지입니다. 그래서 2가 아닌 8이 출력된 것입니다.
그리고 i는 변수입니다. 변수란 변할 수 있는 수 이기 때문에 2를 집어넣었다가 2+6을 집어넣으니
기존의 2란 데이터는 사라지고 2+6인 8이 들어간거지요.

주의 하셔야 할 점은 C언어에서 ' = ' 는 대입이란 뜻입니다.
즉, 수학에서의 a = b는 a와 b가 같다. 라는 뜻이지만, C언어에선 a = b 는 a에 b를 대입시킨다. 라는 뜻이죠.
C언어에서 "같다" 라는 뜻을 가지게 하려면 ' == ' 를 써줘야합니다.
그래서 a와 b가 같다. 라고 할땐 a == b 라고 해야죠.

대입연산자에서 a = a + 1; 이란 코드를 좀 더 간편하게 쓸 수 있는데요.
a = a + 1;a += 1; 로 바꾸면 똑같은 뜻이 됩니다.
즉, a += 1a = a + 1; 과 같은 것이지요.
+= 말고도 -=, *=, /=, %= 가 있습니다.

오늘은 이걸로 마치겠습니다. 잘못된 점이나 부족한 점이 있으시면 지적해주시고, 헷갈리거나 모르는 부분이 있으시면 질문 해주세요.

p.s. 이 글은 안랩 V스쿨 카페(http://cafe.naver.com/vgeneration)와 블로그(http://dudas.tistory.com)에만 게시합니다.

'Programming > C/C++' 카테고리의 다른 글

5번째, 주석문에 대해 알아봅시다.  (0) 2010.07.11
6-2번째, 변수에 대해 알아봅시다.(2)  (0) 2010.07.11
10번째, 관계연산자  (0) 2010.07.11
11번째, 논리연산자  (0) 2010.07.11
12번째, 증가·감소 연산자  (0) 2010.07.11