TITEDIOS 편한 코딩

C 기초강의: #6 연산자 (1) 본문

C++

C 기초강의: #6 연산자 (1)

TitediosKW 2024. 8. 4. 19:00
반응형

C 프로그래밍에서 다양한 연산자가 사용됩니다. 이들 연산자는 데이터의 계산, 비교, 할당 등에 사용되어 프로그램의 논리와 흐름을 제어합니다. 이 포스트에서는 산술 연산자, 대입 연산자, 나누기 및 나머지 연산자, 증감 연산자에 대해 설명하겠습니다.

1. 산술 연산자

산술 연산자는 기본적인 수학 연산을 수행하는 데 사용됩니다.

  • + (더하기): 두 피연산자를 더합니다.
  • - (빼기): 첫 번째 피연산자에서 두 번째 피연산자를 뺍니다.
  • * (곱하기): 두 피연산자를 곱합니다.
  • / (나누기): 첫 번째 피연산자를 두 번째 피연산자로 나눕니다.
  • % (나머지): 첫 번째 피연산자를 두 번째 피연산자로 나눈 후 나머지를 반환합니다.
int a = 10, b = 3;
int sum = a + b;  // 13
int difference = a - b; // 7
int product = a * b; // 30
int quotient = a / b; // 3
int remainder = a % b; // 1

2. 대입 연산자

대입 연산자는 변수에 값을 저장하는 데 사용됩니다. 단순 대입(=) 외에도 연산 후 대입을 수행하는 복합 대입 연산자가 있습니다.

  • = (대입): 오른쪽의 값을 왼쪽 변수에 저장합니다.
  • +=, -=, *=, /=, %= 등: 기존 값에 연산 후 그 값을 다시 대입합니다.
int x = 5;
x += 2; // x = x + 2; 결과는 7
x *= 3; // x = x * 3; 결과는 21

3. 나누기 연산자 (/)

나누기 연산자는 두 숫자를 나누는 데 사용됩니다. 정수형 피연산자에서 사용할 경우 정수 나누기를 수행하며, 결과는 소수점을 버린 값이 됩니다.

int c = 9, d = 2;
int result = c / d; // 4 (정수 나누기)

4. 나머지 연산자 (%)

나머지 연산자는 두 숫자를 나눈 나머지를 반환합니다. 주로 짝수/홀수 검사나 주기적 계산에 사용됩니다. 예를 들어 7을 나머지 연산자를 적용한다면 7을 주기로하는 어떤 작업을 수행할 수 있습니다.

int e = 9, f = 2;
int remainder = e % f; // 1

5. 증감 연산자

증감 연산자는 변수의 값을 1씩 증가시키거나 감소시키는 데 사용됩니다. ++와 --는 전위(prefix)와 후위(postfix) 형태로 사용됩니다. 전위와 후위 표기에 따라 변수의 사용 및 증감에 선후가 있어 사용에 주의가 요구됩니다. 다만, 순서에 맞게 사용한다면 간단한 형태로 사용할 수 있기 때문에 많이 사용하실 것입니다.

  • ++ (전위 증가): 변수의 값을 먼저 증가시키고 사용합니다.
  • -- (전위 감소): 변수의 값을 먼저 감소시키고 사용합니다.
  • ++ (후위 증가): 변수의 현재 값을 사용한 후 증가시킵니다.
  • -- (후위 감소): 변수의 현재 값을 사용한 후 감소시킵니다.
int g = 5;
int h = ++g; // g는 6이 되고, h도 6이 됩니다.
int i = g--; // i는 6이 되고, g는 5가 됩니다(g는 이미 증가되어 6인 상태).

 

여러번 사용한다면요?

int a = 10;
b = (a++) + a + (++a);
printf(b);

 

예를 들어 이렇게 증감연산자를 여러번 사용하면 어떻게 될까요? 정답은 "알 수 없다" 입니다. 컴파일러에 따라 동작 순서가 달라질 수 있기 때문입니다. 따라서, 증감연산자는 여러 번 사용하는 것보다 한번에 하나씩만 사용하는 것이 좋습니다.

6. 계산기 예제

산술 연산자를 공부했으니 역시 계산기 예제를 해보겠습니다. 아래의 예제를 통해 계산기를 구현할 수 있습니다. 지금까지 배웠던 입출력 함수와 산술 연산자가 어떻게 쓰이는지에 대해 집중하여 살펴보시면 좋겠습니다.

#include <stdio.h>

int main() {
    char operator;
    double num1, num2;

    printf("연산자를 입력하세요 (+, -, *, /): ");
    scanf(" %c", &operator);

    printf("두 개의 숫자를 입력하세요: ");
    scanf("%lf %lf", &num1, &num2);

    switch (operator) {
        case '+':
            printf("%.2lf + %.2lf = %.2lf\n", num1, num2, num1 + num2);
            break;
        case '-':
            printf("%.2lf - %.2lf = %.2lf\n",  num1, num2, num1 - num2);
            break;
        case '*':
            printf("%.2lf * %.2lf = %.2lf\n",  num1, num2, num1 * num2);
            break;
        case '/':
            if(num2 == 0) {
                printf("Zero Division!!!"); // 0으로 나누는 에러
               } else {
                printf("%.2lf / %.2lf = %.2lf\n",  num1, num2, num1 / num2);
            }
            break;
        default:
            printf("Invalid operator");
            break;
    }
}

결론

이 연산자들을 잘 이해하고 활용하면, 더 복잡하고 강력한 로직을 작성할 수 있습니다. 연산자 우선순위와 결합 법칙을 잘 숙지하는 것도 중요합니다.

 

도움이 되셨다면 공감 부탁드리겠습니다. 여러분의 공감이 정말 큰 힘이 됩니다.


감사합니다

반응형