C언어 초급 - 5장: 연산자와 표현식 (5.1 산술 연산자 (+, -, *, /, %))

2025. 2. 23. 16:45프로그래밍 언어/C

5.1 산술 연산자 (+, -, *, /, %)

C 언어에서 산술 연산자(Arithmetic Operators)는 숫자 값을 계산하는 데 사용됩니다.
산술 연산자는 정수(Integer)와 실수(Floating-point) 연산에서 다르게 동작할 수 있으며, 특히 나머지 연산자(%)는 정수 연산에서만 사용할 수 있습니다.


1. C 언어의 산술 연산자 종류

연산자 설명  사용 예제 결과
+ 덧셈(Addition) a + b 10 + 5 = 15
- 뺄셈(Subtraction) a - b 10 - 5 = 5
* 곱셈(Multiplication) a * b 10 * 5 = 50
/ 나눗셈(Division) a / b 10 / 5 = 2 (정수 나눗셈)
% 나머지(Modulus) a % b 10 % 3 = 1

2. 정수 연산과 실수 연산의 차이

산술 연산자는 피연산자의 자료형에 따라 정수 연산과 실수 연산으로 나뉩니다.

2.1 정수 연산 (Integer Arithmetic)

  • 피연산자가 모두 정수(int)일 경우, 결과도 정수(int)가 됩니다.
  • 나눗셈(/) 연산 시 소수점 이하를 버림(내림) 합니다.

정수 연산 예제

#include <stdio.h>

int main() {
    int a = 10, b = 3;

    printf("정수 나눗셈: %d\n", a / b);  // 10 / 3 → 3 (소수점 이하 버림)

    return 0;
}

출력 결과

정수 나눗셈: 3

📌 정수 나눗셈은 결과가 정수이며, 소수점 이하 값은 버려짐.


2.2 실수 연산 (Floating-point Arithmetic)

  • 피연산자 중 하나라도 실수(float 또는 double)이면, 결과도 실수(double)가 됩니다.
  • 나눗셈(/) 연산 시 소수점 이하까지 계산됨.

실수 연산 예제

#include <stdio.h>

int main() {
    float a = 10.0, b = 3.0;

    printf("실수 나눗셈: %.2f\n", a / b);  // 10.0 / 3.0 → 3.33

    return 0;
}

출력 결과

실수 나눗셈: 3.33

📌 정수 연산과 달리, 실수 연산은 소수점 이하까지 계산됨.


3. 나머지 연산자 %의 활용

3.1 나머지 연산자(%)란?

  • a % b → a를 b로 나눈 나머지 값을 반환.
  • 정수형(int)에서만 사용 가능 (float, double에는 사용 불가능).

나머지 연산 예제

#include <stdio.h>

int main() {
    int a = 10, b = 3;

    printf("10 %% 3 = %d\n", a % b);  // 10을 3으로 나눈 나머지

    return 0;
}

출력 결과

10 % 3 = 1

📌 10을 3으로 나누면 몫이 3, 나머지가 1이므로 결과는 1.


3.2 float에서는 % 사용 불가

나머지 연산자는 정수형(int)에서만 사용 가능하며, 실수형(float, double)에서는 사용할 수 없습니다.

#include <stdio.h>

int main() {
    float a = 10.0, b = 3.0;
    
    printf("%.2f %% %.2f = %.2f\n", a, b, a % b);  // 오류 발생

    return 0;
}

오류 메시지

error: invalid operands to binary % (have ‘float’ and ‘float’)

📌 해결 방법

  • 실수 나머지를 구하려면 fmod() 함수를 사용해야 합니다. (#include <math.h> 필요)
#include <stdio.h>
#include <math.h>

int main() {
    double a = 10.5, b = 3.2;
    
    printf("실수 나머지: %.2f\n", fmod(a, b));  // fmod(10.5, 3.2) 사용

    return 0;
}

출력 결과

실수 나머지: 0.90

📌 fmod(a, b)는 실수 연산에서 나머지를 구할 때 사용.


4. 나머지 연산자의 활용 예제

4.1 짝수 / 홀수 판별

나머지 연산자를 활용하면 짝수/홀수를 판별할 수 있습니다.

#include <stdio.h>

int main() {
    int num;

    printf("정수를 입력하세요: ");
    scanf("%d", &num);

    if (num % 2 == 0) {
        printf("%d는 짝수입니다.\n", num);
    } else {
        printf("%d는 홀수입니다.\n", num);
    }

    return 0;
}

실행 예시

정수를 입력하세요: 7
7는 홀수입니다.

📌 짝수: num % 2 == 0 / 홀수: num % 2 == 1


4.2 요일 계산 (요일 구하기)

나머지 연산자를 사용하여 요일을 계산할 수 있습니다.
예를 들어, 7일을 기준으로 반복되는 패턴에서 특정 요일을 구할 때 활용됩니다.

#include <stdio.h>

int main() {
    int days;
    char *week[] = {"일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"};

    printf("몇 일 후인지 입력하세요: ");
    scanf("%d", &days);

    printf("%d일 후는 %s입니다.\n", days, week[days % 7]);

    return 0;
}

실행 예시

몇 일 후인지 입력하세요: 10
10일 후는 수요일입니다.

📌 7일 단위로 반복되는 패턴(days % 7)을 활용하여 요일 계산.


5. 정리

연산자 설명  사용 예제
+ 덧셈 a + b
- 뺄셈 a - b
* 곱셈 a * b
/ 나눗셈 (정수: 몫, 실수: 나누기) a / b
% 나머지 연산 (정수만 가능) a % b

📌 주의할 점

  • 정수 연산과 실수 연산의 차이를 이해해야 함 (/ 연산 시 int는 소수점 이하 버림).
  • 나머지 연산자 %는 정수형에서만 사용 가능 (float 사용 시 fmod() 활용).
  • % 연산자를 활용하면 짝수/홀수 판별, 요일 계산 등 다양한 로직을 구현 가능.