주어진 프로그램에서 왜 각각의 다른 결과를 얻었 printf습니까?
#include <stdio.h>
int main()
{
float c = 4.4e10;
printf("%f\n", c);
printf("%f\n", 4.4e10);
return 0;
}
그리고 그것은 다음과 같은 출력을 보여줍니다 :
44000002048.000000
44000000000.000000
이 변환 방법에 이름이 있습니까? 그것에 대해 읽고 싶습니다.
—
user10056563 2009 년
당신이에서 변환 할 때 알고 싶어
—
Eric Postpischil
double로는 floatC 언어에서 발생? 또는 전환으로 어떤 값이 발생하는지, 즉 전환이 어떤 영향을 미치는지 알고 싶습니까? 또는 다른 것?
나는 여기의 대답 이나 표준에 대해 의문을 제기 하지 않지만, 어렸을 때 배우면서 a 와 a에 사용 했습니다 . 상황이 언제 바뀌 었습니까? 어떻게 한 것이 명시 적으로 A (단일)는 printf - ??
—
Adrian Mole
Cprintf("%f",x)floatprintf("%lf",x)doublefloatprintf("%hf",x)
%lfprintf의 @Adrian은와 동일합니다 %f. float변수 인수의 A 는 double마치로 short변환되는 것처럼 컴파일러에서 로 변환됩니다 int.
4.4e10은double상수가float초기화시 변환c되었지만에double전달 될 때 유지 되는 상수 라고 설명합니다printf. 그러나f접미사 를 추가하면float상수 가 일정 하다는 것을 알고 싶을 수도 있습니다 . 인쇄시4.4e10f로 초기화하면 같은 값이 표시c됩니다4.4e10f. 부동 소수점 산술로 양질의 작업을 수행하려면float상수와double상수를 구별하는 것이 중요 할 수 있습니다.