猿问

for嵌套遇到的问题 求大神解答

void main()
{
    int a,b;
    for(b=3;b<=50;b++)
    {
        for(a=2;a<b;a++)        //在这里给a赋值
            if(b%a==0) break;
        if(b==a) printf("%d\t",b);
    }
    getchar();
}


void main()
{
    int a=2,b;                         //在这里给a赋值
    for(b=3;b<=50;b++)
    {
        for(;a<b;a++)
            if(b%a==0) break;
        if(b==a) printf("%d\t",b);
    }
    getchar();
}

上面代码成功运行

下面结果:输出3到50所有数

请解释下为什么会不一样

L0uis
浏览 1168回答 1
1回答

onemoo

上面那个代码:每次进入for(a=2;a<b;a++) 循环时,a的值都是2。下面的代码:a的值在一开始是2,但这个 for(;a<b;a++) 不会在循环前将a赋值为2,所以a的值将累加上去。
随时随地看视频慕课网APP
我要回答