티스토리 뷰

프로그래밍을 과정에서 변수 간의 연산은 기본 중의 기본이지만 특히, 나눗셈 연산은 다른 사칙연산과 달리 결과에 대한 이해가 조금 더 필요한 부분이 있습니다. 이 글에서는 정수형 변수를 이용한 나눗셈 연산이 어떻게 작동하는지 살펴보겠습니다.

C언어에서의 정수형 나눗셈 연산

C언어에서 정수형 변수 간의 나눗셈은 가능합니다. 그 결과는 정수형 나눗셈의 특성 상 소수점 이하를 버린 몫을 반환합니다. 예를 들어, 다음과 같은 코드가 있다고 가정해보죠.

int a=5;
int b=3;
int c=a/b;

printf("%d", c);

이 코드는 컴파일에 아무런 문제가 없으며, c에 저장되는 값은 1이 됩니다. 왜냐하면 53으로 나눈 몫은 1.666...이지만, 정수형 변수에 저장될 때 소수점 이하가 버려지기 때문이죠.

소수점 이하를 포함한 연산의 경우

그렇다면 정수형 변수에 소수점 이하까지 고려한 연산 결과를 얻고 싶다면 어떻게 해야 할까요? 이럴 때는 변수의 타입을 실수형으로 변환하는 작업이 필요합니다.

int a=5;
int b=3;
float c=a/b; // 주의: 여기서 c는 1.0이 저장됩니다.
int d=(int)c;

printf("%d", d);
반응형

위 코드에서 c에 저장되는 값은 1.0입니다. 왜냐하면 a/b 연산이 정수 간의 연산으로 처리되어 결과적으로 1이 float 타입으로 변환되어 c에 저장되기 때문이죠. 따라서 이 경우에도 원하는 결과를 얻기 위해서는 연산 시점에서 타입 변환이 필요합니다.

float a=5;
float b=3;
float c=a/b; // 여기서 c는 1.666...이 저장됩니다.
int d=(int)c;

printf("%d", d);

만약 a와 b가 실수형(float)으로 선언되어 있다면, c에는 1.666... 같은 소수점 이하의 값을 포함한 결과가 저장됩니다. 그리고 이 값을 정수형으로 강제 변환((int)c)하면 1이 d에 저장됩니다.

 

결론

  • C언어에서는 정수형 변수 간의 나눗셈 결과로 몫만 반환되며, 소수점 이하는 버려집니다.
반응형
댓글