跪求大神把这个FOR循环的流程说一下!!!!

编译器DEV
第一种情况图片说明
图片说明
第二种情况:无限输入无限输出???非常不理解
图片说明
图片说明

在此跪谢了

循环体代码最好不要放到循环条件里,容易引起误解,这两个代码等价于

for( int i = 0; i<=4; putchar(c), i++){
    c = getchar();
    printf("\nnihao\n");
}
for( int i = 0; c = getchar(c); putchar(c), i++){
    i <= 4;
        printf("\nnihao\n")
}

第二种情况里只要输入不是‘\0’判断就是真,自然就变成无限循环了。

相当于

int i = 0;
char c;
while (1)
{
i <= 4; //实际上这个判断不起作用
c = getchar();
if (!c) break;
printf("\nnihao\n");
putchar();
i++;
}