c에서 float 캐스팅 관련 질문
글쓴이: goldedit / 작성시간: 수, 2005/09/07 - 5:06오후
c 에서 float 캐스팅 관련 질문 드립니다.
아래와 같은 코드를 작성 해보면
int a=1, b=2; float c, d, e; c = a/b; d = (float)a/b; e = (float)(a/b); printf("%f \n", c); printf("%f \n", d); printf("%f \n", e);
결과값은
0.000000
0.500000
0.000000
e 변수에 결과가 이상한거 같은데요..
일반적으로 봤을땐 d 와 같이 0.5 가 출력 되야 될거 같은데
c와 같이 0.0 이 출력 됩니다.
왜 0.5 가 출력 되지 않고 0.0이 출력 되는건가요?
아시는분 답변 부탁 드립니다.
Forums:
Re: c에서 float 캐스팅 관련 질문
e = (float)(a/b);
a / b는 0이죠... int니까 그걸 float로 캐스팅하니 0.00000
e = (float) a / (float) b; --> 0.500000
d는 a가 (float)로 캐스팅 됐기 때문에 b도 자동형변환이
일어날거구요... 규칙에 의해서 float로...
똑같은 결과를 원하신다면 e를 두 변수다 캐스팅 해 줘야
됩니당^
글 다시 수정합니당^ "int에서 왜 0.5가 표현안될까하는.."
잠시 제가 바보가 된듯한~ 다른분들이 보셨을지두...
Re: c에서 float 캐스팅 관련 질문
많은 사람들(저를 포함한)이 처음에 이 이유로 많이 헤메죠 ^^
두번째로는 이 이유로 헤멜지도...main(){ in
두번째로는 이 이유로 헤멜지도...
main()
{
int i=7;
int j = 8;
int k;
k = i == j; // 주로 산술연산자(+-*/%등)만을 사용하다가보면.... 무엇인가를 잊게되지요.
printf("%d\n", k);
k = i > j ;
printf("%d\n", k);
return 0;
}
답변 감사 드립니다.
^^;
-
댓글 달기