저는이 간단한 코드를 시도합니다. 이는 부동으로 표현 될 수없는 제 10 개 정수를 나타낸다 :(float) casting이 작동하지 않습니다.
int main(){
int i, cont=0;
float f;
double di, df;
for(i=10000000, f=i; i<INT_MAX; i++, f=i, df=f, di=((float)i)){
if(i!=f){
printf("i=%d f=%.2f df=%.2lf di=%.2lf\n", i, f, df, di);
if(cont++==10) return 0;
}
}
return 1;
}
디 이중 변수이다, 그러나 DF 같아야 그래서, (플로트) 내가로 설정하지만 그렇지 않습니다.
예를 들어, 숫자는 16,777,217 DF 및 f를 의해 16777216로 표현되지만, 디는 (플로트) 주조 무시 여전히 16,777,217이다.
어떻게 가능합니까?
** 나는이 사용하고 (우분투 4.4.3-4ubuntu5) 귀하의 질문에 관련 4.4.3
플랫폼 및 컴파일러 버전은 무엇입니까? – sarnold
왜 쉼표 연산자를 사용하고 있습니까? 꼭 필요한 것은 없으며 이와 같이 불필요한 복잡성 문제를 추가합니다. – Joe
당신은'% lf'을 말할 필요가 없습니다. 단지'% f'는 괜찮습니다, 그리고 그것은'double'을 의미합니다. –