首页 > 解决方案 > 当未声明的变量被传递给 for 循环并改变 for 循环的语法时会发生什么

问题描述

// 例子

#include<stdio.h>
    int main(){
    int i,j;
    for(i<4; j=3; j=0){
        printf("%d",i);
    } 
}

// 为什么输出是 i=1 的无限 for 循环

标签: cfor-loop

解决方案


由于for形式循环

for (initialization; condition; increment) {/*body*/}

可以转换为while循环,如下所示:

{
initialization;
while (condition)
    {
    /*body*/
    increment;
    }
}

您的程序可以有效地转换为:

int i,j;
{
i<4;
while (j=3)
    {
    printf("%d",i);
    j=0;
    }
}

由于赋值运算符返回已分配的值(在本例中为:3),并且任何非零整数值都被计算为true,因此您将获得一个无限循环。

至于你得到什么输出......这是未定义的行为,因为你使用了 uninitialized variable i


推荐阅读