C++에서 copysign() 함수가 어떻게 작동하는지 자세히 알아보겠습니다.
copysign() 함수는 C++ 표준 라이브러리(<cmath>)에 포함된 수학 함수로, 두 개의 인수를 받아 첫 번째 값의 크기(magnitude)와 두 번째 값의 부호(sign)를 결합한 결과를 반환합니다. 이름 그대로 '부호를 복사(copy sign)'하는 기능을 수행하는 함수입니다.
이 함수를 호출하려면 <math.h> 또는 <cmath> 헤더 파일을 반드시 포함해야 합니다.
문법
copysign(x, y)
- x: 결과값의 크기를 제공하는 값
- y: 결과값의 부호를 제공하는 값
참고로 copysign() 함수는 double 타입의 값을 반환하며, float 타입용으로는 copysignf(), long double 타입용으로는 copysignl() 함수도 함께 제공됩니다.
예제 1: 정수 입력
입력: copysign(4, -5)
출력: -4
설명 − 위 예제는 한 값의 부호를 다른 값의 크기에 복사하는 방법을 보여줍니다. 두 번째 인수의 부호인 "−"와 첫 번째 인수의 크기인 4가 결합되어 최종 결과값 -4가 생성됩니다.
예제 2: 실수 입력
입력: copysign(-1.3, 4.4)
출력: 1.3
설명 − 두 번째 인수의 부호인 "+"와 첫 번째 인수의 크기인 1.3이 결합되어 결과값 1.3이 생성됩니다. 이 예제는 copysign() 함수에 정수뿐만 아니라 소수점이 있는 실수 값도 인수로 전달할 수 있음을 보여줍니다.
구현 접근 방식
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다 −
- 크기를 고려할 값 하나와 부호를 고려할 값 하나를 선택합니다. 여기서는 각각 -1.1과 2.3을 사용합니다.
- 선택한 두 값을 copysign() 함수의 인수로 전달합니다.
- 이때 첫 번째 인수는 크기를 취할 값이어야 하고, 두 번째 인수는 부호를 가져올 값이어야 합니다. 순서에 유의해야 합니다.
예제 코드
#include <iostream>
#include<cmath>
using namespace std;
int main() {
cout<<copysign(-1.1,2.3);
return 0;
}
실행 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다 −
1.1
// 두 번째 인수의 부호인 "+"와 첫 번째 인수의 크기인 1.1이 결합되어 최종 결과값 1.1이 출력됩니다.
이처럼 copysign() 함수는 부호 연산이 필요한 수학적 계산, 예를 들어 방향 전환이나 특정 조건에 따라 부호를 강제로 지정해야 하는 상황에서 매우 유용하게 활용될 수 있습니다.