在C语言for循环里双循环中有一部分赋值不懂

#include<stdio.h>
int main()
{
int i,j,n;
double t,s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
t=1; //每次进循环 t=1 那第一次进循环的时候 i=1 到第二循环的时候 表达式一 j=2 但表达式二 j又<=1 这怎么运行的
for(j=2;j<=i;j++)
t=t*j;
s=s+t;
}
printf("%f",s);
return 0;
}

表达式一 j=2 但表达式二 j又<=1 ,循环条件不满足,不进行循环,直接进行后面的s+t运算。

for(j=2;j<=i;j++)
t=t*j;
这个是算阶乘的,每个数独立计算,这样如果不把t初始化为1,那么后面数的阶乘是在前一个数基础上乘的,阶乘计算就不对了。

这个循环可以简化为

for(t=1,i=1;i<=n;i++)
{
  t*=i;  //计算阶乘,
  s+=t;
}

当i=1的时候,第二个循环 j<=i为假 所以循环不运行 ,当i>=2的时候才运行