'Casting'에 해당되는 글 1건

  1. 2009.04.11 선언이 안돼있어도 함수를 사용 by 언제나19

float를 return하는 함수를 만들어서 연이어 호출하고 있었는데,
어느 순간에선가 이상한 값을 return한다.
1.0을 return해야 하는데, 10564238429 이런 비슷한 값을..

어떤 값인지 한참을 해메다가
*(int*)&r
한 값이란 걸 알았다.
float 값을 int로 해석한 것.

원인은 header file에 signature를 실수로 안 적었기 때문.
signature를 안적어도 에러가 나지 않고 실행이 되고 있었다. 짜증나.
그러니까 default로 return 값을 int로 해석했던 것.

이와는 별개로
void*를 float로 변환하고 싶을 때,
void* voidpointer(void);
union u {
float f;
long l;
};
u.l = (long)voidpointer();
라고 적으면 u.f를 쓸 수 있다.
Posted by 언제나19

댓글을 달아 주세요