Main difference: C was originally developed by Dennis Ritchie at AT&T Bell Labs between 1969 and 1973. It has a free-format program source code. C is a general-purpose programming language. C is one of the oldest currently used programming languages and is one of the most widely used programming languages. ANSI C is a set of successive standards which were published by the American National Standards Institute (ANSI) for the C programming language. The ANSI specifies the syntax and semantics of programs written in C.

Some other differences between C and ANSI C:

  • ANSI C allows the inclusion of a function prototype which gives the type of the function and the type of each parameter before defining the function.
  • In C, function declarations are assumed by default to be of type int. Hence, integer type functions need not declared at all.
  • In C, function headers have different syntax.
    Function prototypes must be declared without a list of arguments and types, and consist of the type, function name and an empty set of parentheses.
  • C converts all float types in an expression to double precision types.
  • The type signed char is not available in C, but is in ANSI C.
  • In C, type void is not available.
  • In C, functions are assumed to return integer if they return nothing.
  • Many old C compilers expect that the first character of a preprocessor directive line is a #. No leading white space is allowed.
  • In C, the signed type qualifier is not available.
  • In C, the unsigned qualifier can be used to qualify integer types only.
  • In C, the unary positive sign is not allowed.
  • In C, the type long double is not available.
  • In C, the const qualifier is not available.
  • In C, enumeration type is not available.
  • Automatic arrays cannot be initialized in declarations in C. Only external and static arrays can be initialized.
    Automatic structures and arrays of structures cannot be initialized in declarations in C.
  • In C, Some old compilers may not allow references to entire structures, requiring the use of structure pointers or individual structure members.