Язык С был изобретен и реализован Деннисом Ритчи (Dennis Ritchie) для компьютера DEC PDP-11 в операционной системе Unix. Этот язык был разработан на основе «более старого» языка BCPL, созданного в свое время Мартином Ричардсом (Martin Richards). BCPL оказал определенное влияние на язык В, разработанный Кеном Томпсоном (Ken Thompson). В свою очередь развитие языка В привело к созданию в 1970 году языка С.
На протяжении многих лет стандартом С была фактически версия, поставляемая вместе с операционной системой Unix. Эта версия впервые была описана Брайаном Керниганом (Brian Kernighan) и Деннисом Ритчи в книге The С Programming Language (Englewood Cliffs, N.J.: Prentice-Hall, 1978). Летом 1983 года был образован комитет по созданию для языка С стандарта ANSI (American National Standards Institute — Национальный институт стандартизации США). Надо отметить, что процесс стандартизации занял весьма немалый срок — шесть лет.
Стандарт ANSI был окончательно принят в декабре 1989 года и впервые опубликован в начале 1990 года. Этот стандарт был также принят организацией ISO (International Standards Organization — Международная организация по стандартизации), поэтому он называется стандартом ANSI/ISO языка С. В 1995 году была принята 1-я Поправка к стандарту С, согласно которой, среди прочего, было добавлено несколько библиотечных функций. В 1989 году стандарт С вместе с 1-й Поправкой стал базовым документом Стандарта C++, определяющего С как подмножество C++. Версию С, определенную стандартом 1989 года, обычно называют С89.
На протяжении 90-х годов внимание программистов было приковано главным образом к развитию стандарта C++. Тем временем разработка С также продолжалась, приведя в 1999 году к появлению стандарта С, который принято называть С99. В целом С99 сохранил все основные черты С89, т.е., можно сказать, что язык С остался самим собой! Комиссия стандартизации С99 уделила основное внимание двум направлениям: добавлению нескольких численных библиотек и развитию новых узкоспециальных средств, таких как массивы переменной длины и модификатор указателя restrict. Благодаря этим нововведениям язык С опять оказался на переднем крае развития языков программирования.
Как указано выше, часть I этой книги посвящена основам С в версии стандарта 1989 года. В настоящее время это наиболее распространённая версия, она используется всеми компиляторами С, она же является основой для C++. Поэтому при написании программ на С для любого из существующих в настоящее время компиляторов необходимо придерживаться описания, приведенного в части I книги. В части II рассматриваются свойства, введенные стандартом С99.