Чому в даній програмі я отримав різні результати для кожного з них 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
doubleна floatв мові С? Або ви хочете знати, які значення є результатом конверсії, тобто які ефекти має конверсія? Або щось інше?
Cми використовували printf("%f",x)для «а» floatі « printf("%lf",x)для» double. Коли все змінилося? І як би однозначно надрукуватиf (єдиний) float- printf("%hf",x)??
%lfу printf - те саме, що і %f. floatУ змінному аргументі перетворюються в doubleкомпіляторі, так само , як shortотримує перетворено в int.
4.4e10цеdoubleконстанта, яка перетворюєтьсяfloatв ініціалізацію,cале зберігається як a,doubleколи передаєтьсяprintf. Тим НЕ менше, ви могли б також хотіли б знати , що додаванняfсуфікса робить йогоfloatпостійна: друк4.4e10fбуде показувати те ж значення , що результати ініціалізаціїcв4.4e10f. Відмінністьfloatконстант відdoubleконстант може бути важливим для якісної роботи з арифметикою з плаваючою комою.