C 에서..
printf("%d", ceilf(1.0f / 4.0f));
.. 을 하면 0이 나오네요. 1이 나와야 될거 같은데 말이죠. 이유가 뭔지 궁금합니다.
printf("%f", ceil(1.0f/4.0f)); 해보세요.
플로팅 라이브러리가 run-time 로드 안되서 그렇습니다
플로팅 라이브러리가 런타임로그가 안되어 있다..는게 무슨 뜻인지 좀 더 자세히 설명해 주실수 있으신지요? ^^; ceilf(1.0f / 4.0f) 를 (int)로 캐스팅하면 1로 출력이 되는데.. 그렇지 않으면 0으로 출력이 되는게, 정말 이해가 안가네요.
http://www.opengroup.org/onlinepubs/000095399/functions/printf.html
printf("%d\n", (int)ceilf(1.0f / 4.0f)); printf("%f\n", ceilf(1.0f / 4.0f));
printf는 format을 파싱해서 argument 타입(size, 바이너리 형식)을 인식하고 이에 따라 stack을 파싱하여 값을 참조하므로 format에 맞는 data type으로 cast를 하든가 data type에 맞는 format을 쓰세요.
아래처럼 format과 잇따르는 argument의 type이 다를 때
printf("%d %d\n", ceilf(1.0f/4.0f), 10);
___________________________________ Less is More (Robert Browning)
가변인자함수는 함수원형(function prototype)이 정의되어 있어도 자동형변환이 적용되지 않습니다.
Real programmers /* don't */ comment their code. If it was hard to write, it should be /* hard to */ read.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
printf("%f",
printf("%f", ceil(1.0f/4.0f)); 해보세요.
%d
플로팅 라이브러리가 run-time 로드 안되서 그렇습니다
그럼 어떻게 해야 하나요?
플로팅 라이브러리가 런타임로그가 안되어 있다..는게 무슨 뜻인지 좀 더 자세히 설명해 주실수 있으신지요? ^^;
ceilf(1.0f / 4.0f) 를 (int)로 캐스팅하면 1로 출력이 되는데.. 그렇지 않으면 0으로 출력이 되는게, 정말 이해가 안가네요.
http://www.opengroup.org/onli
http://www.opengroup.org/onlinepubs/000095399/functions/printf.html
printf는 format을 파싱해서 argument 타입(size, 바이너리 형식)을 인식하고 이에 따라 stack을 파싱하여 값을 참조하므로
format에 맞는 data type으로 cast를 하든가
data type에 맞는 format을 쓰세요.
아래처럼 format과 잇따르는 argument의 type이 다를 때
전혀 의도하지 않은 오동작을 합니다.
___________________________________
Less is More (Robert Browning)
___________________________________
Less is More (Robert Browning)
가변인자함수는
가변인자함수는 함수원형(function prototype)이 정의되어 있어도 자동형변환이 적용되지 않습니다.
Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.
댓글 달기