Реших че не трябва да отварям нова тема за някви малковажни нещица.
Та наскоро почнах да чета една книга за програмиране на С.След всяка тема има упражнения за правене и както всеки път си ги правя за по-добро услояване на материала.
Днес четох за използване на функции за връщане на стойности и на задачата която беше дадена след края на ми направи нещо впечатление.
Задачата беше да се напише програма за конвентриране на долари в лири($2 е 1 лира), като се иска да се пита потребителя да зададе количество долари.
И аз написах програмата по следния начин:
/*Програма за конвертиране на долари в лири*/
#include<stdio.h>
int convert(void);
int main(void)
{
printf("The equal lir are: %f",convert());
return 0;
}
int convert(void)
{
float dollars;
printf("Please enter amount of dollars:");
scanf("%f",&dollars);
return dollars/2;
}
Но когато я изпълня и не дава точен отговор:Please enter amount of dollars:4
The equal lir are: -0.029997
Погледнах в отговорите на учебника и видях че за задали
int вместо
float, но ми стана интересно как програмата ще даде точен отговор с
int когато я запитам колко лири са
5 долара
. Както си и мислех ми казва че са
2, което не е вярно.Пробвах с
double, но резултата беше същия като при
float.Та се замислих направих отделна програма без функция и задох
float за числа с плаваща запетая и всичко беше ОК.Та ето къде ми възникна един голям Х , защо става така при функцията.
Възможно ли е return да връща само целочислени стойности?Потръсих по напред в книгата но не успях да намеря отговор.