Mam funkcję C, która zwraca typ float
.Zwracanie wartości 1.0f daje mi 1065353216
Gdy funkcja zwraca 1.0f
, odbiornik widzi 1065353216
, a nie 1.0
.
Co mam na myśli to, co następuje:
float Function()
{
return 1.0f;
}
float value;
value = Function();
fprintf(stderr, "Printing 1.0f: %f", value);
Wyświetla:
1065353216
Ale nie:
1.0
Czy jesteś pewien, że jest to kod jesteś kompilacji/testowanie? Podaj więcej kontekstu. –
Co ciekawe, 1065353216 jest reprezentacją całkowitą 1,0 (pojedyncza precyzja IEEE). Może Twój kompilator lub standardowa biblioteka ma błąd, gdzie interpretuje% f jak% d? – GameZelda
Wygląda na to, że '% d' został magicznie zastąpiony przez'% f', więc nic nie wygląda tutaj ... – Simon