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

avi picture avi · Apr 2, 2010 · Viewed 79.4k times · Source

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?

Answer

Windows programmer picture Windows programmer · Apr 2, 2010

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.