关于for循环语句出现无限次循环的问题

在学习C语言的中for语句时,尝试利用for语句进行1+2+3+……+100时,将sum+=i放到循环条件的后面,运行出现无限循环,而放到循环条件的前面却可以正常求解。
 #include<stdio.h>
int main()
{
    int i,sum;
    for(i=1,sum=0;i<=100,sum+=i;i++)
    printf("%d\n",sum);
    return 0;
} 

img

 #include<stdio.h>
int main()
{
    int i,sum;
    for(i=1,sum=0;sum+=i,i<=100;i++)
    printf("%d\n",sum);
    return 0;
}

img

这是为什么呢?以及那个放到循环条件前面是什么意思啊?

i<=100,sum+=i
这样会死循环的原因是这是一个逗号表达式,表达式的结果是最右侧表达式的结果,由于sum+=i始终大于0,所以死循环了
交换顺序后
sum+=i,i<=100
整个表达式的结果是最右侧的i<=100的结果,显然当i大于100时就会结束循环

i<=100,sum+=i
逗号表达式,最终取最后的结果。
所以等价于判断条件是sum+=i

i<=100,sum+=i是逗号表达式,这个表达式的值是sum+=i; i初始值是1,所以sum是非0的数,所以就是死循环。

for(i=1,sum=0;i<=100,sum+=i;i++)改成 for(i=1,sum=0;i<=100;i++) sum+=i;