Next: , Previous: , Up: Loop Statements   [Contents][Index]


19.6.3 break Statement

The break statement looks like ‘break;’. Its effect is to exit immediately from the innermost loop construct or switch statement (see switch Statement).

For example, this loop advances p until the next null character or newline.

while (*p)
  {
    /* End loop if we have reached a newline.  */
    if (*p == '\n')
      break;
    p++
  }

When there are nested loops, the break statement exits from the innermost loop containing it.

struct list_if_tuples
{
  struct list_if_tuples next;
  int length;
  data *contents;
};

void
process_all_elements (struct list_if_tuples *list)
{
  while (list)
    {
      /* Process all the elements in this node’s vector,
         stopping when we reach one that is null.  */
      for (i = 0; i < list->length; i++
        {
          /* Null element terminates this node’s vector.  */
          if (list->contents[i] == NULL)
            /* Exit the for loop.  */
            break;
          /* Operate on the next element.  */
          process_element (list->contents[i]);
        }

      list = list->next;
    }
}

The only way in C to exit from an outer loop is with goto (see goto Statement and Labels).