As you all know we always talk about ANSI C, ISO-C, C99,c88 ,etc…but we dont know the actual differences between these all version of c language. So here i am going to explained all versions of c language.
Brief History :
- Root of c language is started in 1966 when Martin Richards has designed BCPL (Basic Combined Programming Language), that was a procedural, imperative, and structured computer programming language .
- After that in 1669 Ken Thompson and Dennis Ritchie has designed B programming language at Bell Labs
K&R C :
In 1978, Brian Kernighan and Dennis Ritchie published the first edition of The C Programming Language. Which is known to C programmers as “K&R”. For most of the year this book was taken as the informal standard of c programming language.
K&R introduced several language features:
- standard I/O library
long intdata type
unsigned intdata type
- compound assignment operators
Here function declarations did not include any information about function arguments. Here function parameter type checks were also not performed.
After the publication of K&R C, some other vendors has added several unofficial features to the language, like
voidfunctions (i.e. functions with no return value)
- functions returning
uniontypes (rather than pointers)
- assignment for
- enumerated types
So after this all, the large number of extensions and lack of agreement on a standard library, together with the language has created so many issue. So now all need to standardize the specification of c programming language.
You can find the detail Specification of this version in this book The C Programming Language
ANSI C and ISO C (C89 and C90) (Standard c):
In 1983, the American National Standards Institute (ANSI) formed a committee, X3J11, to establish a standard specification of C. In 1989, the standard was ratified as ANSI X3.159-1989 “Programming Language C”. This version of the language is often referred to as ANSI C, Standard C, or sometimes C89.
In 1990, the ANSI C standard (with formatting changes) was adopted by the International Organization for Standardization (ISO) as ISO/IEC 9899:1990, which is sometimes called C90.
Therefore, the terms “C89” and “C90” refer to the same programming language.
C89 is supported by current C compilers, and most C code being written today is based on it. Any program written only in Standard C and without any hardware-dependent assumptions will run correctly on any platform with a conforming C implementation, within its resource limits.
You can find the detail Specification of this version of C90 – AS 3955-1991: $141 from ansi.org
After the ANSI/ISO standardization process, the C language specification remained relatively static for some time. But The C standard was further revised in the late 1990s, leading to the publication of ISO/IEC 9899:1999 in 1999, which is commonly referred to as “C99”.
C99 introduced several new features, including inline functions, several new data types (including
long long int and a
complex type to represent complex numbers), variable-length arrays, support for variadic macros (macros of variable arity) and support for one-line comments beginning with
//, as in BCPL or C++. Many of these had already been implemented as extensions in several C compilers.
You can find the detail Specification of this version C99 – ISO 9899:1999: available online
After this all in In 2007 another revised version of c programming language is come with name C1X.
in 2008 one more standard for Embedded C comes.