Читать «Полный справочник по С++» онлайн - страница 7

Герберт Шилдт

Ш Сравнение стандартов С89 и С99

Несмотря на то что все новшества, внесенные в стандарт С99, весьма важны с теоретической точки зрения, они имели мало практических последствий, так как до сих пор нет ни одного широко распространенного компилятора, который поддерживал бы стандарт С99. Большинство программистов до сих пор считают языком С его вариант, определенный стандартом С89. Именно его реализуют все основные компиляторы. Более того, подмножество С языка C++ описывается именно стандартом С89. Хотя некоторые новшества, включенные в стандарт С99, в конце концов обязательно будут учтены следующим стандартом языка C++, пока они несовместимы с языком C++.

Поскольку подмножество С языка C++ соответствует стандарту С89, и эту версию изучают большинство программистов, именно ее мы рассмотрим в части I. Итак, используя название С, мы будем иметь в виду версию языка, определенную стандартом С89. Однако мы будем отмечать важные различия между версиями С89 и С99, поскольку это улучшит совместимость языков С и C++.

_I С - язык среднего уровня

Язык С часто называют языком среднего уровня. Это не означает, что он менее эффективен, более неудобен в использовании или менее продуман, чем языки высокого уровня, такие как Basic или Pascal. Отсюда также не следует, что он запутан, как язык ассемблера (и порождает связанные с этим проблемы). Это выражение означает лишь, что язык С объединяет лучшие свойства языков высокого уровня, возможности управления и гибкость языка ассемблера. В табл. 1.1 показано место языка С среди других языков программирования.

Таблица 1.1. Место языка С среди остальных языков программирования
Высший уровеньAda
Modula-2
Pascal
COBOL
FORTRAN
BASIC
Средний уровеньJava
C#
C++
С
Forth
Низший уровеньMacro-assembler
Assembler

Будучи языком среднего уровня, язык С позволяет осуществлять манипуляции с битами, байтами и адресами — основными элементами, с которыми работают функции операционной системы. Несмотря на это, программы, написанные на языке С, можно выполнять на разных компьютерах. Это свойство программ называется машинонезависимостью (portability). Например, если программу, написанную для операционной системы UNIX, можно легко преобразовать, чтобы она работала на платформе Windows, то говорят, что такая программа является машинонезависимой (portable).

Все языки высокого уровня используют концепцию типов данных. Тип данных (data type) определяет множество значений, которые может принимать переменная, а также множество операций, которые над ней можно выполнять. К основным типам данных относятся целое число, символ и действительное число. Несмотря на то что в языке С существует пять встроенных типов данных, он не является строго типизированным языком, как языки Pascal и Ada. В языке С разрешены практически все преобразования типов. Например, в одном и том же выражении можно свободно использовать переменные символьного и целочисленного типов.