C++break语句替换

C++ break statement alternative

本文关键字:替换 语句 C++break      更新时间:2023-10-16

很抱歉问了这个"愚蠢"的问题,我对C++不熟悉。我有这个:

for (i=0; i<n; i++) {
    if (ar[i] == 1) {
        printf ("Wrong.n");
        break;
    }
    else {
        printf ("Correct.n");
        break;
    }
}

如何在不中断statement的情况下完成此操作?有人建议我使用while循环。这样行吗?

下面的代码也有同样的效果(尽管我怀疑这是你想要的):

i= 0;
if (n > 0)
{
    if (ar[0] == 1) {
        printf ("Wrong.n");
    }
    else {
        printf ("Correct.n");
    }
}

goto是一种替代方案。

for (i=0; i<n; i++) {
    if (ar[i] == 1) {
        printf ("Wrong.n");
        goto endofthefor;
    }
    else {
        printf ("Correct.n");
        goto endofthefor;
    }
}
endofthefor: ;

如果您也不想使用goto,那么使用标志来中断循环是一种方法。

{
    int breaktheloop = 0;
    for (i=0; !breaktheloop && i<n; (!breaktheloop) && (i++)) {
        if (ar[i] == 1) {
            printf ("Wrong.n");
            breaktheloop = 1; continue;
        }
        else {
            printf ("Correct.n");
            breaktheloop = 1; continue;
        }
    }
}

CCD_ 5是指CCD_。我使用这个是因为我们不能在for中放置语句。

您希望避免break语句的目的是什么?我能想到的第一个替代方案是goto声明

int main()
{
//declare 'ar' array
    for (int i=0; i<n; i++) {
        if (ar[i] == 1) {
            printf ("Wrong.n");
            goto someLabel;
        }
        else {
            printf ("Correct.n");
            goto someLabel;
        }
    }
    someLabel:
    printf("Hellon");
    return 0;
}

您可以执行while循环,如:

int i = 0;
bool found = false;
while(i<n && !found) {
    if (ar[i] == 1) {
       printf ("Wrong.n");
       found = true;
    } else {
      printf ("Correct.n");
      found = true;
    }
    i++;
}