Я пытался построить функцию в графике GNU, и мой график не совпадал с тем, что представлен в статье.Прочитав, что GNU интерпретирует функции как C, я попытался кодировать функцию в C. Та же проблема.
В конце концов я понял, что проблему можно продемонстрировать с помощью этого лакомого кусочка:
#include <stdio.h>
#include <stdlib.h>
int main()
{
double p = 1.0;
double pMinusOneHalf1 = p - (1.0/2.0);
double pMinusOneHalf2 = p - (1/2);
printf("\nFirst = %lf \n Second = %lf\n\n", pMinusOneHalf1, pMinusOneHalf2);
return 0;
}
, который дает вывод
First = 0.500000
Second = 1.000000
Просто интересно, есть ли у кого-нибудь объяснение, почемуC принял бы «1» и «2» как INT внутри выражения для DOUBLE.
Кажется, что людям очень легко попасться.Опция gcc -Wall даже не комментирует это.