问一个关于如何定义变量的问题

#include <stdio.h> #include <math.h> int main (void) { int i; long long r; printf ("请输入一个数字:"); scanf ("%i", &i); r = pow(i, 5); printf ("%d的五次方是%d\n", i, r); return 0; }
为什么在输入100以后得不出正确的值呢?100的五次方应该也在 long long 的取值范围里啊。
把 r 定义成double就可以。