StackOverflow,C математика не уважая объявлены константы
Я пытаюсь написать (очень) простую программу, которая будет использоваться, чтобы показать, как машина точность и плюхается функции эффекта вокруг их корня. Мой код выглядит следующим образом:
#include <stdio.h>
#include <math.h>
int main(){
const float x = 2.2;
float sum = 0.0;
sum = pow(x,9) - 18*pow(x,8) + 144*pow(x,7) - 672*pow(x,6) + 2016*pow(x,5) -
4032*pow(x,4) + 5376*pow(x,3) - 4608*pow(x,2) + 2304*x - 512;
printf("sum = %d", sum);
printf("\n----------\n");
printf("x = %d", x);
return 0;
}
Но я получаю, что sum
равно нулю. Сначала я подумал, что, может быть, моя машина не уважая уровень Percision, но после печати x
я обнаружил, что значение x
меняется каждый раз, когда я запустить программу и всегда огромный (abs(x) > 1e6)
У меня есть он объявлен как постоянная, так что я еще больше запутался, что происходит ...
FYI Я компиляции с GCC -lm
Не печатайте 'float' с '% d'. – DCoder