I ', попробовав этот простой код. Это показывает первые 10 целых чисел, которые не могут быть представлены в поплавка:(float) литье не работает
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, но это не.
Например, число 16777217 представлено как 16777216 от е и ф.р., но ди еще 16777217, не обращая внимания на отливку (поплавок).
Как это возможно?
** Я использую это: GCC (Ubuntu 4.4.3-4ubuntu5) 4.4.3
Какая платформа и версия компилятора? – sarnold
Почему вы используете такой оператор запятой? Нет абсолютно никакой необходимости и добавляет ненужные вопросы сложности, подобные этому. – Joe
Вам не нужно указывать '% lf'. Просто '% f' в порядке, и это означает' double'. –