7

I'm a beginner, so please let me know the difference between ANSI C and the C programming Language.

Clifford
  • 88,407
  • 13
  • 85
  • 165
user3902444
  • 299
  • 1
  • 3
  • 5
  • 1
    If you're a beginner, this is unimportant historical information you should completely ignore. It will only distract you. – user2357112 Aug 02 '14 at 16:17
  • You might like to read here: http://en.wikipedia.org/wiki/C_%28programming_language%29#History Related also: http://stackoverflow.com/q/22500/694576 – alk Aug 02 '14 at 16:19
  • You can read the [C89 rationale](http://www.lysator.liu.se/c/rat/title.html), which explains, _why_ certain things were changed (and by that tells you _what_ was changed). Probably the most important changes: function prototypes (look for old-style or K&R function declarations and definitions if you're interested) and the preprocessor (which varied a lot between different implementations). – mafso Aug 02 '14 at 16:23

1 Answers1

18

ANSI is a US standards body that released the first standard specification for C in 1989. The standard was adopted by ISO in 1990 and ISO are now the standards body for the language - not ANSI.

ANSI C merely refers to a particular standard for the C Programming Language - i.e. there is no difference, they refer to the same thing. However there have been several standards and de-facto standards for C:

  • K&R C - as defined by the first edition of The C Programming Language by Brian Kernhigan and Dennis Ritchie, published in 1978.
  • ANSI C - 1989 (also known as C89). Described (but no longer defined) by K&R 2nd Ed.
  • ISO C 1990 (C90 - more-or-less identical to C89, but in an ISO document).
  • ISO C 1999 (C99)
  • ISO C 2011 (C11)
Clifford
  • 88,407
  • 13
  • 85
  • 165
  • 4
    While a lot of people think of ANSI C as C89, C11 has also been ratified by ANSI and technically ANSI C is actually C11. – ouah Aug 02 '14 at 16:47
  • 4
    @ouah : Which only serves to make the term *ANSI C* even more ambiguous and best avoided. Besides it is not quite true; C90 was *ratified* by ANSI, C99 and C11 were *adopted*. The ISO C standards committee is an international body - it would be rather parochial to claim it as "American". It is also adopted by by the [*British Standards Institute*](http://tinyurl.com/plowzf3), but no one would refer to it as *BSI C*! In a more practical sense the [`-ansi` switch in GCC](http://tinyurl.com/po2xt3n) enforces C90. – Clifford Aug 03 '14 at 07:01
  • 1
    Note that since writing those there is a ISO C17 and a C2x in development - I am not going to maintain this answer, - you get the point. – Clifford Mar 08 '21 at 17:16