резюме: 99 стандартизировано, имеет новые ключевые слова, новые элементы массива, комплексные числа, библиотечные функции и тому подобное. Все больше компиляторов - c89, так как у них было все это время, чтобы сделать их такими.
A) ANSI X3.159-1989. Это оригинальный стандарт 1989 г., датированный
Декабрь 1989 г. с обоснованием. Основная часть языка
описанный в разделе 3, и «библиотека C» - stdio,
функции и т. д. - в разделе 4.
B) ISO 9899: 1990. Это оригинальный стандарт ISO C. "ANSI" является
Американский национальный институт стандартов, так что международная толпа
иметь свои стандарты со своей, другой, нумерацией
система. Они просто приняли стандарт ANSI 1989 года, удалили
Обоснование и перенумерация разделов (называя их "оговорками"
вместо). За очень немногими исключениями вы можете просто добавить три, так что
большая часть языка описана в разделе
- er, "clause" - 6 и часть "C library" в разделе 7.
C) ISO 9899: 1999. Это новомодный стандарт "C99", с его
Массивы переменной длины, гибкие элементы массива, новые ключевые слова, такие как
"restrict" и "_Bool", новая семантика для ключевого слова "static", new
синтаксис для создания анонимных агрегатов, новые типы комплексных чисел,
сотни новых библиотечных функций и т. д.
Новый стандарт ISO был немедленно «принят обратно» ANSI. я имею
не видел никаких официальных «санкций против ANSI» по этому поводу, но с учетом
обычные системы нумерации, я бы ожидал, что это будет стандарт ANSI
номер X3.159-1999. (Система нумерации довольно очевидна:
стандарт, как только он выходит, получает число - X. для
ANSI, или просто число для ISO - и суффикс, обозначающий год
издание. Обновление существующего стандарта повторно использует номер, с
Новый год.)
Хотя X3.159-1989 и 9899: 1990 имеют разные годы и раздел
нумерация, они фактически идентичны, поэтому «C89» и «C90» действительно
обратитесь к тому же языку. Следовательно, вы можете сказать или «C89» или «C90»
и значат одно и то же, даже для тех, кто знает все тонкости.
Также было несколько небольших изменений в оригинальной ИСО 1990 года.
стандарт: «Нормативное приложение 1» и два «Технических исправления»
(пронумеровано; даю Техническое исправление 1 и TC2). Два TC являются
считается исправлением ошибок в формулировках
стандарт, в то время как NA1 является фактическим «изменением». На практике ТК не
действительно влияют на пользователей, в то время как NA1 добавляет целый ряд функций, которые
люди могут использовать, поэтому NA1 действительно важнее. NA1 вышел в
1994, так что можно было бы сослаться на «ISO 9899: 1990, измененный NA1» как
"C94". Я тоже видел его под названием "C95".