Does `break` work only for `for`, `while`, `do-while`, `switch' and for `if` statements?

StackOverflow https://stackoverflow.com/questions/2565659

  •  23-09-2019
  •  | 
  •  

문제

Suppose, I have a if statement inside a for loop:

for( ; ; )
{
  if( )
    {
     printf(" inside if");
     break;
    }//if         

  printf("inside for");
}//for

Now, will the break statement cause the compiler to come out of the for loop or will it only come out of the body of if once the condition in the if becomes satisfied?

도움이 되었습니까?

해결책

The break statement breaks out of the nearest enclosing loop or switch statement.

break does not break out of an if statement, but the nearest loop or switch that contains that if statement. The reason for not breaking out of an if statement is because it is commonly used to decide whether you want to break out of the loop.

Interestingly, a telephone switch misbehaved because the company that invented C made exactly this bug. They wanted to break out of an if statement and they forgot that it would break out of the entire for statement.

다른 팁

It will break out of the for loop. A break statement only has an effect on loops (do, for, while) and switch statements (for breaking out of a case).

From the C99 standard, section 6.8.6.3:

Constraints

A break statement shall appear only in or as a switch body or loop body.

Semantics

A break statement terminates execution of the smallest enclosing switch or iteration statement.

break will not break out of an if clause, but the nearest loop or switch clause. Also, an if clause is not called a "loop" because it never repeats its contents.

Break statement takes effect only on loops and switch clause. In any case it will come out from the nearest enclosing loop. It's a good practice to use a conditional break i.e. break enclosed by some if statement. If you want to come out of all the loops or some loop you can use goto statement. For example:

while(true) {
     while (some_condition) {
          if (some_condition)
               goto label;
     }
}
label: // do something here

Break statement will not break any if or else statement. if you are using break statement it mainly come out from the nearest loop(for loop, while loop, do while loop and switch case)

The break statement has no use in decison making statements. It is used only in loops, when you want to force termination from the loop and continue execution from the statement following the loop. There's no question of "will break statement cause the control to come out of the if statement if condition is true" , because irrespective of the break statement the control will anyway come out of the if statement if the condition is true and once its body is executed. The if statement is not a loop . it is either not exected at all or exectuted just once. So it absolutely makes no sense to put a break inside the body of if.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top