я заметил, что если я изменяю float на int и меняю числа на целые, функция fuction работает ... что я должен изменить, чтобы функция работала правильно
, как сказано впримечание: проблема в том, как вы (пытаетесь) напечатать значение в
printf("y is %d when t is 0.3\n" , y);
%d
предположим, что соответствующий аргумент является int и напечатает егокак int , но y является float .Обратите внимание, что в этом случае преобразование из float в int не происходит, поскольку аргументы управляются через varargs
, просто выполните
printf("y is %f when t is 0.3\n" , y);
Также измените
void main(void)
на
int main()
После изменений, компиляции и выполнения:
/tmp % gcc -pedantic -Wall -Wextra f.c -lm
/tmp % ./a.out
y is 1.273792 when t is 0.3
Обратите внимание, что все вычисления выполняются в double , поэтому лучше заменить float на double , чтобы ввести ваши переменные
(правка) Компиляция исходного кода с помощью gcc и опция -Wall
сигнализируют о ваших проблемах:
/tmp % gcc -Wall f.c -lm
f.c:4: warning: return type of 'main' is not 'int'
f.c: In function 'main':
f.c:18: warning: format '%d' expects type 'int', but argument 2 has type 'double'
f.c:19: warning: 'return' with a value, in function returning void
Лучше всего использовать -Wall и -Wextra