Channels ▼

Andrew Koenig

Dr. Dobb's Bloggers

Have we forgotten what's wrong with goto statements?

February 22, 2009

I saw a Usenet discussion recently on the question: Is a continue statement (in C or C++) something to avoid?  What struck me about the discussion was how many people contributed to the discussion by stating their opinions and going no further.

One popular argument was that a continue statement was just another way of spelling goto, and because goto statements are evil, continue statements are also evil.  Of course this argument is not completely true, because if a continue statement were just another form of goto, there would be no reason to have both statements in the language.  How much of a problem results from this difference depends, then, on whether the differences between continue and goto are related to the reasons for avoiding goto statements in the first place.

The most commonly stated reason for avoiding goto statements is that they are "hard to understand."  This claim, of course, is nothing more than a statement of opinion unless there is supporting evidence to back it up.

Before I tell you what I think about continue statements and why, I'd like to invite readers to comment about why they think goto statements are problematic, and how those opinions might relate to continue statements.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.