Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 프로그래밍: 나눗셈(/)과 모듈로(%) 연산자의 차이 완벽 정리

C 언어에서 나눗셈(Division)모듈로(Modulo)는 이름은 비슷하지만 서로 다른 결과를 반환하는 연산자입니다. 두 연산자의 차이를 명확히 이해하면 수학적 계산뿐 아니라 짝수·홀수 판별, 숫자 자릿수 분리 등 다양한 프로그래밍 문제를 손쉽게 해결할 수 있습니다.

나눗셈과 모듈로의 정의

  • 모듈로(Modulo)% 연산자로 표현되며, 정수 나눗셈의 나머지(remainder) 값을 반환합니다.
  • 나눗셈(Division)/ 연산자로 표현되며, 나눗셈의 몫(quotient) 값을 반환합니다.

예를 들어 30 / 20의 결과는 몫인 1이고, 30 % 20의 결과는 나머지인 10입니다.

프로그램 1: 기본 사용 예제

#include<stdio.h>
int main(){
    int a,b,c;
    printf("enter a,b,c values:");
    scanf("%d%d%d",&a,&b,&c);
    printf("a/b=%d a%%b=%d\n",a/b,a%b);
    printf("(a+10)%%b=%d (a+10)/b=%d\n",(a+10)%b,(a+10)/b);
}

실행 결과

enter a,b,c values:2 4 6
a/b=0 a%b=2
(a+10)%b=0 (a+10)/b=3

a=2, b=4일 때 a/b는 몫 0을, a%b는 나머지 2를 반환합니다. 또한 a에 10을 더한 값 12로 계산하면 (a+10)/b는 3, (a+10)%b는 0이 됩니다.

프로그램 2: 포인터 변수를 활용한 예제

포인터 변수를 사용하여 모듈로와 나눗셈 연산을 수행할 수도 있습니다.

#include<stdio.h>
void main(){
    //포인터 및 변수 선언//
    int num1,num2;
    int *p1,*p2;
    p1=&num1;
    p2=&num2;
    int div,mod;
    //사용자 입력 읽기//
    printf("Enter the values of num1 & num2: ");
    scanf("%d,%d",&num1,&num2);
    div=*p1/ *p2;
    mod=*p1%*p2;
    //결과 출력//
    printf("Division value = %d\n",div);
    printf("Modulus value = %d\n",mod);
}

실행 결과

Enter the values of num1 & num2: 30,20
Division value = 1
Modulus value = 10

이 예제에서는 포인터 p1, p2가 각각 num1, num2의 주소를 가리키며, 역참조(*)를 통해 값에 접근하여 나눗셈과 모듈로 연산을 수행합니다. 입력값 30과 20에 대해 나눗셈 결과는 몫 1, 모듈로 결과는 나머지 10으로 출력됩니다.

정리

/ 연산자는 나눗셈의 몫을, % 연산자는 나눗셈의 나머지를 반환한다는 점만 기억하면 됩니다. 두 연산자는 항상 함께 사용되며, 특히 정수형 데이터를 다룰 때 매우 유용하게 활용됩니다.