본문 바로가기
c언어

c언어 대입 연산자에 대하여 알아보기

by 개발자 L 2022. 12. 2.
반응형

c언어 대입 연산자에 대하여 알아보기

네 안녕하세요, 이번 포스팅에서는 c언어 대입 연산자에 대하여 한 번 알아보는 시간을 가져보려 합니다.

흔히 일상에서 대입이란, 무언가를 선택하여 넣거나, 무언가를 정의하여 사용할 때 대입이라는 말을 쓰죠?
그리고 수학에서는 어떤 미지수에 등호를 붙여서 하나의 수식과 동일하게 만들어 그걸 수식을 대신하여 사용하기도 하고요.

이를테면 x = y + 1처럼 말이죠.

그래서 이번 포스팅에서는 c언어에서는 이러한 대입 연산자를 어떤 식으로 쓰는지, 그리고 어떤 종류의 대입 연산자가 있는지 한 번 알아보려 합니다.

그럼 지금부터 함께 알아보실까요?

 

1. 대입 연산자

우리는 대입 연산자를 수도 없이 사용을 해왔습니다.

수학 시간에 방정식을 풀 때 손글씨로 쓰기도 했고요,

그리고 우리가 지금까지 했던 c언어 예제들에서도 이미 이걸 사용을 하고 있었습니다.

이런 식으로요.

x = y + 10;

이렇게 우리는 많이 쓰곤 했습니다.

프로그래밍 언어에서의 의미는 x의 값을 y + 10이라는 값으로 저장을 하겠다는 의미가 됩니다.

그리고 c언어에서는 수학과는 조금 다른 규칙이 있는데,

한 번 같이 보실까요?

  • 등호의 양쪽에는 변수, 그리고 변수가 포함된 수식이 와야 한다.
  • 같은 문자에 대하여 증가, 또는 감소 대입을 할 수 있다.
  • 등호를 연속 사용하여 값을 넣을 수 있다.

이 이야기가 무슨 이야기인지 궁금하시죠?
그럼 제가 간단한 식을 써서 한 번 보여드릴게요.

10 = x + y;
x + y = 10;

이건 첫 번째 경우입니다.

오른쪽이든 왼쪽이든 상관없이 변수가 아닌 상수가 올 경우에는 값을 저장을 할 수 없습니다.

수학에서의 등호는 '같다' 이지만, 프로그래밍 언어에서의 등호는 '저장한다'의 의미로 통하기 때문입니다.

그래서 절대 어떤 쪽이든 대입 연산자 이용 시에 상수를 사용할 수 없습니다.

x = x + 1;

그리고 이건 두 번째 경우입니다.

이건 수학적인 측면에서 보면 명백히 문제가 있는 수식이지만, '저장하다' 의 뜻을 가진 등호가 있는 프로그래밍 언어에서는 완전 문제가 없는 문장입니다.

이건 x에다가 1을 더해서 값을 저장하겠다는 뜻이기 때문입니다.

y = 10 + (x = 2 + 7);
x = y = 3;

여기에서 밑의 식은 흔히 수학 시간에도 본 수식이라서 이해가 바로 되시겠지만,

위의 경우는 한 번도 저렇게 쓰는 경우를 본 적이 없기 때문에 조금은 난처하실겁니다.

이러한 식은 프로그래밍 언어이기 때문에 가능합니다.

그 이유는 모든 수식은 값을 가진다는 특징이 있기 때문입니다.

그래서 이걸 풀어보게 된다면 x는 2와 7을 더한 값이고, y는 이 x값에 10을 더한 값이 됩니다.

그래서 x의 값은 9, y의 값은 19가 됩니다.

이런 식으로도 쓸 수 있기 때문에 여러 가지로 활용을 할 수 있습니다.

그럼 이를 간단한 예제를 통하여 한 번 봅시다.

#include <stdio.h>

int main()

{
    int x, y;

    x = 1;
    
    printf("수식 x + 1의 값은 %d\n", x + 1);
    printf("수식 y = x + 1의 값은 %d\n", y = x + 1);
    printf("수식 y = 10 + (x = 2 + 7)의 값은 %d\n", y = 10 + (x = 2 + 7));
    printf("수식 y = x = 3의 값은 %d\n", y = x = 3);

    return 0;
}

이렇게 한 번 작성을 해봤습니다.

그리고 여기서도 똑같이 리턴되는 값은 입력되는 값과 대응되는 것이 같아야 하므로, 수식과 똑같이 적었습니다.

그럼 결과는 어떻게 나왔을까요?

한 번 같이 보실까요?

수식 x + 1의 값은 2
수식 y = x + 1의 값은 2
수식 y = 10 + (x = 2 + 7)의 값은 19
수식 y = x = 3의 값은 3

이렇게 수식과 값이 제대로 잘 나온 것을 보실 수 있습니다.

반응형

 

2. 복합 대입 연산자

프로그래밍 언어에서는 복합 대입 연산자라는 것을 이용합니다.

이건 쉽게 말하면 산술 연산자와 대입 연산자를 합쳐놓은 연산자입니다.

이렇게 하면 코드를 더 간결히 만들 수 있다는 장점이 있습니다.

다만, 이 수식에 익숙해지려면 직접 써보면서 익숙해져야 합니다.

그럼 무엇이 있는지 간단한 표와 함께 봅시다.

복합 대입 연산자 의미
x += y x = x + y
x -= y x = x - y
x *= y x = x * y
x /= y x = x / y
x %= y x = x % y
x &= y x = x & y
x |= y x = x | y
x ^= y x = x ^ y
x >>= y x = x >> y
x <<= y x = x << y

이런 식으로 씁니다.

그리고 여기에서 알아두어야 할 사항이 있는데,

이 복합 연산자가 들어간 식이 연산되는 과정은 오른쪽에 있는 식을 먼저 계산하고 나서,

왼쪽에 있는 변수와 연산이 됩니다.

예를 들어서 x *= y + 1이라는 식이 있다고 가정을 해봅시다.

이 식을 풀면 x = x * y + 1이 되죠?

하지만 이렇게 되면 어떤 식이 수식에 있던 것인지 모릅니다.

그래서 프로그래밍 언어는 이럴 경우에 x = x * (y + 1) 이렇게 계산을 합니다.

그러니 연산되는 순서를 꼭 기억하셔야 합니다.

그럼 간단한 예제와 함께 봅시다.

#include <stdio.h>

int main()

{
    int x = 10, y = 10, z = 33;

    x += 10;
    y *= 2;
    z %= 10 + 20;

    printf("x = %d, y = %d, z = %d \n", x, y, z);

    return 0;
}

이렇게 한 번 작성을 해봤습니다.

밑에 보시면 z처럼 딱 떨어지는 하나의 수가 아니라, 이렇게 연산을 하는 식을 써서 나타낼 수도 있습니다.

이 예제의 결과를 한 번 보실까요?

x = 20, y = 20, z = 3

이렇게 문제없이 값이 잘 도출이 된 것을 볼 수 있습니다.

 

여기까지 c언어 대입 연산자에 대하여 알아보는 시간을 가졌습니다.

다음 포스팅에서는 c언어 관계 연산자에 대하여 한번 알아보도록 하겠습니다.

긴 글 읽어주신 독자분들께 다시 한 번 감사합니다 ~

반응형

댓글