안녕하세요? c언어 프로그래밍을 하다가 궁금한 점이 있어 질문 올립니다.
두 수의 크기를 비교하는 함수를 디자인하려 합니다.
수는 void*로 받아서 int건 float건 상관없이 비교를 하려합니다.
함수의 프로토 타입을 아래와 같이 하려고 하는데요
int compare(void* a, void* b, int size_a, int size_b)
함수 안에서 다음과 같이 unsigned char의 포인터로 캐스팅하고 size만큼 점프하면서 두 수를 비교하려 했습니다.
unsigned char* a_val = (unsigned char*)a;
unsigned char* b_val = (unsigned char*)b;
그런데 여기서 생기는 문제는 두 수가 같은지는 그냥 1바이트씩 비교하면 되지만 두 수 중 어느 수가 큰지 작은지는 어떻게 해야하나요?
int같은 경우라면 상위 바이트부터 비교해서 큰 것이 크다라고 하면 된다고 생각했지만, 부호가 다를 수 있고, 또 double이나 float같은 경우 저장구조가 다른데...