Standard in C

Last Updated : 17 Jul, 2026

C standards are official specifications that define the syntax, semantics, and standard library of the C programming language. They ensure that C programs behave consistently across different compilers and platforms while introducing new features, performance improvements, and bug fixes over time.

  • C standards provide a common set of rules that compiler developers and programmers follow to ensure portability and compatibility.
  • Each new standard builds on the previous one by adding new language features, improving the standard library, and addressing issues found in earlier versions.

Evolution of C Standards

StandardYearDescription
K&R C1978Original version of C introduced by Brian Kernighan and Dennis Ritchie.
ANSI C (C89)1989First official standard published by ANSI.
ISO C (C90)1990International version of ANSI C adopted by ISO.
C951995Minor update to C90 with additional library support.
C991999Introduced many modern language features.
C112011Added multithreading, atomic operations, and Unicode support.
C17 (C18)2018Maintenance release with bug fixes and clarifications.
C232023Latest C standard with new language improvements and library enhancements.

K&R C (1978)

The first version of the C language, developed by Brian Kernighan and Dennis Ritchie, served as the foundation for modern C.

  • No official language standard.
  • Compiler implementations varied across systems.
  • Introduced core C syntax and programming concepts.

ANSI C (C89) (1989)

The first official C standard published by ANSI to make the language consistent and portable.

  • Standardized C syntax and behavior.
  • Improved code portability across compilers.
  • Added the Standard C Library.

ISO C (C90) (1990)

The international version of ANSI C, adopted by the International Organization for Standardization (ISO).

  • Almost identical to ANSI C89.
  • Made C an internationally recognized standard.
  • Improved portability across different platforms.

C95 (1995)

A minor update to C90 that focused on library enhancements and internationalization.

  • Added wide character library support.
  • Improved support for international character sets.
  • Fixed defects found in C90.

C99 (1999)

A major update that introduced several modern language features and improved developer productivity.

  • Added // single-line comments.
  • Introduced inline functions and long long data type.
  • Added Variable Length Arrays (VLAs) and designated initializers.

C11 (2011)

Introduced features for modern systems programming, performance, and concurrency.

  • Added multithreading support (<threads.h>).
  • Introduced atomic operations (<stdatomic.h>).
  • Added Unicode support and static assertions.

C17 (C18) (2018)

A maintenance release of C11 that focused on improving the existing standard.

  • Fixed bugs and inconsistencies.
  • Clarified ambiguous parts of the specification.
  • Introduced no major language features.

C23 (2023)

The latest C standard that modernizes the language while maintaining backward compatibility.

  • Added new language and library features.
  • Improved type handling and usability.
  • Enhanced support for modern programming practices.

Importance

C standards define the official specification of the C programming language, ensuring consistent behavior across different compilers and platforms.

  • Ensure that C programs are portable and behave consistently across different compilers and platforms.
  • Introduce new language features, library functions, and performance improvements.
  • Improve code reliability, security, and maintainability by addressing issues in previous standards.
  • Maintain backward compatibility so that existing C programs continue to work with newer standards.
  • Help developers write modern, standards-compliant, and future-ready C programs.

Checking the Supported C Standard 

You can check the C standard supported by your compiler using compiler commands or predefined macros. This helps ensure that your program is compiled with the desired language standard and that the required features are available.

Use the compiler version command to view your installed compiler version:

gcc --version

To check the predefined standard macro, compile and run the following program:

C
#include <stdio.h>

int main() {
    printf("%ld\n", __STDC_VERSION__);
    return 0;
}

Output
201112
Comment