C语言在for循环内和for循环外赋值结果完全不一样是为什么?如图中·sum1的赋值

//利用公式(泰勒公式)求sinx的近似值
#include <stdio.h>
#include <math.h>
int main()
{
    printf("请输入角度:\n");
    int i,j;
    double x, sum = 0, k = 1, sum1;
    //sum1 = 1;
    scanf("%lf", &x);
    x =3.1415926 * x / 180;//化为弧度
    for (i = 1; i <= 100; i ++)
    {
        sum1 = 1;
        for (j = 1; j <= 2 * i - 1; j++)
        {
            sum1 = sum1 * j;
        }                        //计算分母阶乘
            sum = sum + k * pow(x, 2 * i - 1) / sum1;
            k = -k;
    }
    printf("sinx=%f\n", sum);
}

sum1 = 1 写在循环里边,每次循环都会重新将 sum1 的值改为 1,
sum1 = 1 写在循环外边,初始值赋值一次,后边直接使用上次得到的结果

严格来说应该是定义的问题,定义在for循环外是全局变量,定义在内部是局部变量,局部变量有他的作用范围,在定义的{}内有效,超过范围将变为无效值,全局变量的作用范围是整个程序结束