función pow en un redondeo de bucle hacia abajo

Estoy probando la función pow en c, y algo sale mal.

#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]); } } 

Me sale la salida:

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

Ahora las dos últimas entradas, no tiene sentido para mí. Deberían tener 55 y 20. ¿Alguien sabe por qué sucede esto?

De acuerdo, cambio la indexación y muestro que la función pow funciona:

 #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); } 

Salida:

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