Question: C language allows jumping inside loop. What would be the use of doing so?

```
  if(n > 3) {

    i = 2;
    goto inner;
  }

   /* a lot of code */

   for(i = 0; i < limit ;i ++) {

    inner:
    /* ... */
   }

```

Answer: 
If you've ever coded in Assembler (ASM), then you'll know that GOTOs are pretty standard, and required, actually. The C Language was designed to be very close to ASM without actually being ASM. As such, I imagine that "GOTO" was kept for this reason.

Though, I'll admit that GOTOs are generally a "bad idea, mmmkay?" in terms of program flow control in C and any other higher level language.
From <http://en.wikipedia.org/wiki/Duff%27s_device>

> 
> In computer science, Duff's device is an optimized implementation of a serial copy that uses a technique widely applied in assembly language for loop unwinding.
> 
> 
> 

...

> 
> **Reason it works**
>   
> The ability to legally jump into the middle of a loop in C.
> 
> 
>