张小艾 发表于 2020-3-18 11:35:04

关于for循环的初始化

#include<stdio.h>
int main()
{
        int i=1,j=1;
        for(;i<=5;i++){
                for(;j<=i;j++){
                        printf("*");
                }
                printf("\n");
        }
        return 0;
}

{
        int i,j;
        for(i=1;i<=5;i++){
                for(j=1;j<=i;j++){
                        printf("*");
                }
                printf("\n");
        }
        return 0;
}
这两段代码有啥不一样嘛?感觉就是初始化的位置不同啊,可是打印出来是结果一个是只有一列,一个是三角形啊,问题出在哪里啊?
帮帮忙啊各位大佬_(:з」∠)_(编译器Devcpp)

--_--|| 发表于 2020-3-18 11:35:05

#include<stdio.h>
int main()
{
      int i=1,j=1;
      for(;i<=5;i++){
                for(;j<=i;j++){//在这里,j的值在执行完后都会自增1
                        printf("*");
                }
                printf("\n");
      }
      return 0;
}

{
      int i,j;
      for(i=1;i<=5;i++){
                for(j=1;j<=i;j++){//在这里,j的值每一次都变为1,自增几乎没有作用
                        printf("*");
                }
                printf("\n");
      }
      return 0;
}

最后的魁拔 发表于 2020-3-18 11:48:23

调试一下,就知道了,第二个代码,执行第二次循环,j初始都为1,
而第一个,第二次循环,j为上一次的j

永恒的蓝色梦想 发表于 2020-3-18 13:07:46

第一个代码中的i和j不是局部变量,第二个中的i和j是局部变量

我在网上捡垃圾 发表于 2020-3-18 17:22:19

J并没有自增
页: [1]
查看完整版本: 关于for循环的初始化