Im Jahre 1983 wurde vom American National Standards Institute (ANSI) ein Komitee namens X3J11 gegründet, um eine Norm für die Programmiersprache C zu entwickeln. Als Basis für die Sprachdefinition diente die Programmiersprache C, wie sie von den Erfindern Brian W. Kernighan und Dennis Ritchie (K&R-C) konzipiert wurde.
Nach 6-jähriger Arbeit konnte im Dezember 1989 die Norm ANSI C verabschiedet werden. Diese Fassung der Sprache C wird aufgrund ihres Erscheinungsjahres auch als C89 bezeichnet. Ein Jahr später, 1990, wurde diese Norm (mit ein paar kleineren Änderungen) von der ISO als Norm übernommen.
Viele der bis dato ungenormten Eigenschaften der Sprache wurden einheitlich festlegt, aber auch neue Funktionalitäten wie Funktionsprototypen, ein leistungsfähigerer Präprozessor, sowie die Möglichkeit zur Deklaration von Konstanten, wurden in das Sprachkonzept integriert. Die C-Norm räumte dabei unter anderem mit Unklarheiten in der ursprünglichen Definition auf, hierzu zählen die Ausführungsreihenfolge der vier Inkrement- und Dekrement-Operatoren (++, --). Mit der Norm wurden ferner die enthaltenen C-Bibliotheken festgelegt.
Bis heute ist C90 die Sprachbasis für alle Derivate der Programmiersprache C, unter anderem auch für das modernere C++, das über Möglichkeiten zur objektorientierten und generischen Programmierung verfügt.
Ein auf C90 basierendes Programm sollte, zumindest theoretisch, ohne Probleme von jedem C-Compiler übersetzt und ausgeführt werden können. In der Praxis ist dieses nur sehr bedingt der Fall, da fast alle C-Derivate viele eigene Bibliotheken und Funktionsprototypen benutzten, um auf die individuellen Komponenten des Computers zugreifen zu können.