C Language/Programming Course
2장 연산자(3부 부호연산자와 대입연산자) 첫번째 시간
행복하면
2009. 6. 23. 11:04
2장 연산자
3부 부호 연산자와 대입 연산자
3부 부호 연산자와 대입 연산자
이번시간에는 부호 연산자와 대입연산자에 대해서 알아 보겠습니다.
부호 연산자와 대입 연산자도 초등학교때 부터 사용해 온 연산자 입니다.
부호 연산자는 앞에서 표로 봤듯이 음수, 양수를 나타내는 것이고,
대입연산자는 저번 시간에 잠깐 이야기 했듯이 = 를 사용 하는 겁니다.
먼저 대입연산자에 대해서 알아 보겠습니다.
대입연산자는 저번 산술 연산자를 할 때도 잠시 사용을 해 보았고, 1장의 입출력 강의를
할 때도 코드에 이미 나와 있었습니다.
코드에서는 변수 선언하고 바로 정의 할때
int integer = 10;
이렇게 하는 것으로 사용을 하였습니다.
그리고 산술 연산자와 사용을 할 때는
ret = 1 + 3
이렇게 하는 것으로 사용하였습니다.
저번시간에 이 결합성에 대해서 이야기를 하다가 말았는데요.
이 결합성은 앞 강의 때 말한 것 처럼 같은 우선순위에 있는 연산에 대한 우선순위를
준다고 하였습니다.
즉, 3+4+2-1 이런 식이 있다면
먼저 3+4를 하고 이 결과와 2를 더하고 그 결과에 1을 빼는 식으로 합니다.
그 이유는 바로 결합성 때문에 그런건데
대입 연산자의 결합성을 보게 되면
일반 수학에서는 왼쪽에서 오른쪽으로 결합이 이루어 지게 됩니다.
3 + 4 = x
이런식으로 왼쪽의 값이 오른쪽으로 되는 형식 입니다.
하지만 c언어에서는 이와 반대로
x = 3 + 4 되는데
이는 c언어에서 대입연산자의 결합성은 오른쪽에서 왼쪽으로 되기 때문입니다.
다시 말하면 c언어에서는 좌변에는 실제적으로 메모리를 점유하고 있는 변수들이 올수 있으며
우변에는 좌변에 값을 넣는 값들이 올 수 있다는 것입니다.
그리고 대입연산자와 산술연산자를 이용하여 축약연산자라는 것을 만들 수 있습니다.
축약연산자란 말그대로 연산을 축약 시킨 것입니다.
예를 들어서 설명을 해 보겠습니다.
sum = sum + count;
이런 연산이 있습니다.
연산을 보게 되면 같은 sum라는 변수가 2번 쓰였다는 것을 알 수 있습니다.
즉, 원래의 sum 변수에 count 값을 더한다는 뜻을 가지고 있는데
이 같은 뜻을 가진 sum변수를 두번 쓰는 것보다 하나로 줄이는 것이
낫기 때문에 축약연산자라는 것을 사용합니다.
사용방법은
sum += count;
이런식으로 우변에 있는 sum변수를 없애고
산술연산자와 대입연산자를 같이 쓰면 됩니다.
즉 ,
sum = sum - count => sum -= count
sum = sum * count => sum *= count
sum = sum / count => sum /= count
sum = sum % count => sum %= count
이렇게 사용하면 됩니다.
다음으로 부호연산자에 대해서 알아 보겠습니다.
부호연산자도 다른 뜻이 없이 말그대로 값의 양과 음의 값을 나타내 주는 연산자 입니다.
즉,
숫자 1이 있다고 하면
이 숫자가 +인지 -인지 보여 주는 연산자라고 생각하면 됩니다.
통상적으로 양수일 경우는 +를 안 보여 주고 1을 사용하고 음수는 꼭 숫자 앞에 -를 붙여 줍니다.
그리고 변수 선언하는 예로 보면
int a = -1;
int b = 1;
int c = +1;
이렇게 사용을 하면 됩니다.
이 부분에 대해서는 다 아는 것들이라 다른 부분도 따로 없기 때문에 길게는
설명을 안하겠습니다.
다음시간에는 관계연산자에 대해서 알아보도록 하겠습니다.
부호 연산 및 대입 연산을 사용한 예제
===========================================
#include <stdio.h>
int main()
{
int integer1 = -1;
int integer2 = 1;
int sum = 0;
int count;
printf("음수 : %d, 양수 : %d\n", integer1, integer2);
printf("숫자를 입력 : ");
scanf("%d", &count);
sum += count;
printf("더하기 : %d\n", sum);
return 0;
}
===========================================