Q: What is the ``ANSI C Standard?''
A: In 1983, the American National Standards Institute (ANSI) commissioned a committee, X3J11, to standardize the C language. After a long, arduous process, including several widespread public reviews, the committee's work was finally ratified as ANS X3.159-1989 on December 14, 1989, and published in the spring of 1990. For the most part, ANSI C standardized existing practice, with a few additions from C++ (most notably function prototypes) and support for multinational character sets (including the controversial trigraph sequences). The ANSI C standard also formalized the C run-time library support routines.
A year or so later, the Standard was adopted as an international standard, ISO/IEC 9899:1990, and this ISO Standard replaced the earlier X3.159 even within the United States (where it was known as ANSI/ISO 9899-1990 ). As an ISO Standard, it is subject to ongoing revision through the release of Technical Corrigenda and Normative Addenda.
In 1994, Technical Corrigendum 1 (TC1) amended the Standard in about 40 places, most of them minor corrections or clarifications, and Normative Addendum 1 (NA1) added about 50 pages of new material, mostly specifying new library functions for internationalization. In 1995, TC2 added a few more minor corrections.
Most recently, a major revision of the Standard, ``C99'', has been completed and adopted.
Several versions of the Standard, including C99 and the original ANSI Standard, have included a ``Rationale,'' explaining many of its decisions, and discussing a number of subtle points, including several of those covered here.