在C中打破嵌套循环

时间:2016-04-09 22:23:02

标签: break

我需要澄清以下代码段中的break语句:

  1. 当控制到达具有注释“number 1”的中断时,内部循环退出并且控制转移到具有“flag”的以下if语句。这是对的吗?

  2. 当控件到达第二个break语句时,退出该函数。这是对的吗?

    void compute(int n, int numJ) {
    
    int j, jCount = 0, init, base, check, added = 0, flag = 0;
    
    init = pow(10, (n - 1)) + 1;
    
    for(j = 0; j < pow(2, (n - 2)); j++)
    {
        check = init + 10 * convert(j);
    
        for(base = 2; base <= 10; base++)
        {
            added = decValue(check, base);
    
            if(!isPrime(added))
                flag += 1;
            else
                break;   //number 1
        }
    
        if(flag == 9)
        {
            display(check);
            jCount += 1;
        }
    
        if(jCount == numJ)
            break;    //number 2
    }
    }
    

2 个答案:

答案 0 :(得分:1)

break语句终止执行它出现的最近的封闭do,for,switch或while语句。控制传递给终止语句后面的语句。

Source

因此,在您提供的示例中,如果(jCount == numJ) == true,则是,则应退出父for循环。

答案 1 :(得分:0)

是的,第二个break语句将突破外部循环并到达函数的末尾。