我能';我不理解下面代码中c=0和l=0的位置

我能';我不理解下面代码中c=0和l=0的位置,c,C,我无法理解下面代码中c=0和l=0的位置。这里n是数组a中的元素数,m是数组b中的元素数 for(i=2;i<=16;i++){ c=0; for(j=0;j<2;j++) { if(i%a[j]==0) c++; } if(c==2) { l=0; for(k=0;k<3;k++) { if(b[k]%i==0) l++; }

我无法理解下面代码中c=0和l=0的位置。这里n是数组a中的元素数,m是数组b中的元素数

for(i=2;i<=16;i++){
 c=0;
    for(j=0;j<2;j++)
    {
        if(i%a[j]==0)
        c++;
    }
    if(c==2)
    {
    l=0;
    for(k=0;k<3;k++)
    {
        if(b[k]%i==0)
            l++;
    }
    if(l==3)
        count++;}
}

for(i=2;i根据我在评论中读到的内容,似乎让你感到困惑的是所谓的局部变量

当您在某个地方定义变量时,它的范围实际上只覆盖它写入的块的限制(从
{
}
)。当您进入块时,它的空间在堆栈中动态保留,当您离开块时,它的空间会随着堆栈帧的破坏而自动释放


最好只在真正使用变量的地方声明变量,而不是在程序顶部收集所有声明。首先,因为这样可以确保只在需要时分配内存,并尽快自动释放内存。然后,因为这样可以避免使用标识符污染命名空间,而ch可以在不相关的地方进行评估,使bug更难发现。

它使用值
0
初始化变量
c
。欢迎这样做!我不确定你在问什么。这会将值0分配给整数变量
c
。我想知道如果在程序开始时初始化c=0的区别。d不同之处在于,它不会在外部循环的每次迭代中都设置为零。我不知道你的代码的上下文有多重要;一般来说,如果你不使用幻数或变量,阅读起来会更容易。它们没有在那里声明。你错了。请检查版本历史。自从我发布此答案以来,代码已经更改了7次。你看到的与原始帖子没有多大关系。