Rick Stevens wrote:
Well, if you read Kernighan & Ritchey's original "The C Programming Language" book, the "goto" was only put in because C doesn't provide a multi-level break statement. The only way out of that situation short of lots and lots of sentinel values is a goto. Of course, they also state that if you are more than four levels of indentation deep, you probably should think about splitting out a function or rethinking your logic. There are times where a "goto" is appropriate, but one should try to minimize its use--true in almost any procedural language. If you want to abuse the "goto", write in BASIC. :-)
http://xkcd.com/c194.html