
C/C++
Asymmetric Bounds, Part 4: Pragmatic Advantages
By Andrew Koenig, June 28, 2012
People who come to C++ (or C) from languages such as Fortran or Basic sometimes argue that the C++ way of doing things is counterintuitive.Related Reading
More Insights
White Papers
- The Evolving Ransomware Threat: What Business Leaders Should Know About Data Leakage
- 5 Reasons To Move your PKI Deployment to the Cloud
Reports
More >>Webcasts
- Optimizing Your Enterprise IT Architecture to Support Hybrid Work
- Build a Stronger Cybersecurity Defense Virtual Event 5/4

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.
![]() |
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. |
Andrew, I agree with your assessment that starting an array count at 0 rather than 1 or m (limits m – n array) is intuitive on my part. I have been doing C, C++, and C# for about three decades now, and, this is just my opinion. But, I came to C from FORTRAN and old Basic many years ago (even Pascal) and my thoughts at that time were as you describe. For those in the FORTRAN and Basic mind mode, they think that the C way of setting array limits is awkward and they are used to counters that index the arrays from 1 to 42 (or 1986 to 2008). If they continue to write in Basic or FORTRAN, then it would be best for them to continue to use this logic. Somewhere, we all will need to convert from one means to the other. For example, using the 1986 to 2008 example, C users will need to subtract 1986 from the index to get the array index (and set the array limit). FORTRAN and Basic users will need to add 1986 to the index to get the array index. Strangely, it all works out for the particular language used. (Also, I am not sure how arrays can be indexed in VB.NET.)