C for循环中的pow函数向下舍入

我正在尝试c中的pow-function,出了点问题。

#include  #include  int main(){ int highnumber = 18; int input = 344; int diff[18]; for(int j = 1; j<=highnumber; j++){ diff[j-1] = input - pow(j,2); printf("%d\n",diff[j-1]); } } 

我得到输出:

 343 340 335 328 319 308 295 280 263 244 223 200 175 147 119 88 54 19 

现在最后两个条目对我来说没有意义。 他们应该是55岁和20岁。任何人都知道为什么会这样?

好的,我改变了索引,并显示powfunction有效:

 #include  #include  int main(){ int highnumber = 18; int input = 344; int diff[18]; for(int j = 0; j<=highnumber; j++){ diff[j] = input - pow(j,2); printf("%d\n",diff[j]); } int a = input - pow(17,2); int b = input - pow(18,2); printf("%d\n%d",a,b); } 

输出:

344 343 340 335 328 319 308 295 280 263 244 223 200 175 147 119 88 54 19 55 20