Г. Шилдт - Полный справочник по C++ (1109478), страница 7
Текст из файла (страница 7)
Общий вид программы нв языке С обьявлеиия лооальиых переменных тип возвраагаемого значения маЯп (список параметров) < последовательность операторов тип возвращаемого значения Е1 (список параметров) ( последовательность операторов ) тип возврамаемого значения хв (список параметров) ( последовательность операторов ) тип возврацаемого значения ЕИ (список параметров) последовательность операторов ~~ Библиотека и связывание С формальной точки зрения можно написать законченную и вполне осмысленную программу на языке С, не используя ни одной стандартной функции.
Однако это довольно затруднительно, так как в языке С нет ключевых слов, имсюших отношение к вводу-выводу, математическим операциям высокого уровня или обработке символов. В результате большинство программ вынуждены вызывать различные функции, содержашиеся в стандаргннои библиотеке (а(апг)агг( )<Ьгагу).
Все компиляторы языка С++ сопровождаются станларпюй библиозекой функций, выполняющих наиболес распространенные задачи. В этой библиотеке определен минимальный набор функций, которые полдерживаются большинством компиляторов. Однако конкретный компилятор может содержать много других функций. Например, сшндартная библиотека не содержит графических функций, но в каждом компиляторе всегда есть определенный набор ~аких функций Стандартная библиозека языка С++ разделена на лве части: функции и классы.
Стандартная библиотека функций представляет собой наследие языка С. Язык С++ поддерживает все функции, прелусмотрснные станлартом С89. Таким образом, все стандартныс функции языка С можно свободно использовать в программах на языке С++. Кроме стандартной библиотеки функций, язык С++ имеет собственную библиотеку классов. Эта библиотека состоит из объектно-ориснтированных модулей, которые можно использовать в собственных программах. Кроме того, сушествуст стандартная Часть !. Основы языка С++: подмножество С библиотека шаблонов БТ1, содержащая широкий набор готовых решений многих задач. В части 1 используется только стандартная библиотска функций, поскольку именно она относится к языку С.
Стандартная библиотека состоит из многих универсальных функций. При вызове библиотечной функции компилятор "запоминает"' ес имя. Позднее редактор связей объединит ваш код с объектным кодом этой библиотечной функции. Этот процесс называется редакглираааяием связей 111пЫпд1. Некоторыс компиляторы имеют свои собственные редакторы связей, остальные используют редактор связей, предусмотренный операционной системой. Функции в библиотеке имеют машияолезависимый формат (ге1осагаЫс Гогтаг). Это значит, что адреса памязи для разных машинных инструкций не являюзся абсолютными — сохраняешься лишь информация о смещении их адреса.
Фактические адреса ячеек, используемых стандартными функциями, определяются во время редактирования связей. Подробное описание этих процессов можно найти в соотвстствуюших тсхнических руководствах. Более дстальныс объяснения были бы излишни. В стандартной библиотеке содержится много функций, которые могли бы оказаться полезными. Оци прсдставляют собой крупные строительные блоки, нз которых можно сконструировать свою программу. В частности, если какую-то функцию вы используетс в своих программах очень часто, ее следует поместить в библиотеку.
~ Раздельная компиляция Большинство коротких программ обычно можно уместить в одном файле. Однако по мере возрастания объсма программы увеличивается время ее компилирования. Для решения этой проблемы в языке С/Сч ь предусмотрена возможность делить программу на файлы и компилировать каждый из них о~дельно. Скомпилировав всс файлы, озрсдактировав связи между ними и библиотечными функциями, вы получите завершенный объскзный код. Прсимушество разлельной компиляции заключается в том, по при изменении кода, записанного в одном из файлов, нет необходимости компилировать заново всю программу.
Это существенно экономит время на этапе компиляции. Документация„сопровождающая компиляторы языка С/С++, содержит инструкции, которые позволят вам скомпилировать программу, записанную в нескольких файлах. ~ Расширения файлов.С и .СРР Разумеется, программы, приведенные в части 1, являются вполне корректными программами на языке С++.
Их можно компилировать с помощью любого современного компилятора языка С++. Одновременно они являются корректными программами на языке С и могут компилироваться с помощью компиляторов этого языка. Итак, если вы собираетссь писать программы на языке С, можете рассматривать программы из первой части в качестве примера. Традиционно программы на языке С используют расширения файла .С, а программы на языке С++ — .СРР. Компилятор языка С++ использует расширение файла для определения типа программы.
Это имеет большое значение, поскольку компилятор рассматривает любую программу, используюгцую расширение .С, как программу на языке С, а программу, записанную в файл с расширением .СРР, — как программу на языке С++. Если обратное нс указано явно, вы можете выбрать любое расширение для файла с программой из первой Глава 1. Обзор языка С части книги.
Однако программы, приведенные в остальной части книги, должны быль записаны в файлы с расширением .СРР. И последнее: хотя язык С является полмножеством языка С++, между ними сушествует несколько отличий. В некоторых случаях программу на языке С нужно компилировать именно как программу яа языке С (используя расширение С), Все такие случаи мы оговариваем отдельно. зв Часть й Основы языка С++: подмножество О ПОлный справочник по Ф ! Ф Выриения этой главе рассматриваются самые важные элементы языка С (и, соответственно, В языка С++) — выразгекия гехргеккюпк).
В языке С/С++ выражения носят намного более абстрактный характер, чем в большинстве других языков программирования, и обладавп большей экспрессивностью. Выражения состоят из атомарных элементов: данных и операторов. Данные представляют собой либо переменные, либо константы. Как и во л1ноптх языках программирования, в языке С/С++ предусмотрено большое количество разнообразных типов данных и операторов.
'~~ Пять основных типов данных В подмножестве С сушествуют пять элементарных типов данных: символ, целое число, число с плавающей точкой, число с плаваюшей точкой улвоеннои точности и переменная, не имеюшая значений. Им соответствуют следуюшие кпочевые слова: оцаг„ Зпе, бхоае, бооттхв и ообб. Все другие типы данных в языке С создаются на основе элементарных типов, указанных выше.
Размер переменных и диапазон их значений зависит от типа процессора и компилятора. Однако во всех случаях размер символа равен 1 байт. Размер целочисленной переменной обычно равен длине машинного слова, принятой в конкретной операционной системе. В большинстве 15-битовых операционных систем, например, ООВ и %1пботкк 3.1, размер целочисленной переменной равен 16 бит. В большинстве 32-битовых операционных систем, например Ът1пдоткз 2000, этот размер равен 32 бит. Однако, стремясь к машинонезависимости программ, следует избегать конкретных предположений о размере целочисленных переменных. Важно четко понимать, что и в языке С, и в языке С++ оговаривается лишь минималькыб диапазон, в котором изменяются значения переменных каждого типа, а не их размер в байтах.
')Йййййй~~ Ртвфлт~ К лоти основным омоем данных, опредоламккк в язьае С, язык О+к добаагмв и еще $йййммвтвым даа: ьооз и коькг е. Эти аипь~ будут рассмотрвнм во вглораб часто книги. Точное представление чисел с гглаваюшей точкой зависит от их конкретной реализации. Размер целого числа обычно равен длине машинного слова, принятой в операционной системе. Значения переменных типа отток, как правило, используются лля представления символов, предусмотренных в системе кодирования /тэСИ.
Значения, выхоллшие за пределы допустимого диапазона, на разных компьютерах обрабатываются по-разному. Диапазон изменения переменных типа бхоае и аооЫо зависит от способа представления чисел с плаваюшей точкой. В любом случае, этот диапазон достаточно широк. Стандарт языка С определяет минимальныи диапазон изменения чисел с плаваюшей точкаи: от 1Š— 37 до 1Е+37. Минимальное количество цифр, определяюших точность чисел с плавающей точкой, указано в табл. 2.1. Таблица 2.1. Все типы данных, определенные в стандарте АМЯ/! $0 С 5тапбагб Обмчкмл размер, бкт Мккмкакькмй дкаоазок Часть 1.
Основы языка С++: подмножество С овкг оовьоовб сваг акооеб сваг кое иовкооес Ьое азсоеб Ьок кьоге кое ооквооас клоке кое 8 8 8 16 ипи 32 16 ипи 32 16 ипи 32 16 16 От -128 до 127 От Одо255 От -128 до 127 От -32768 до 32767 От 8 до 65535 Такои же, как у 1.ое От -32768 до 32767 От 0 до 65535 Окончание табл. 2.1 Обычным размер, бмт Минимальныйдмалазон вздоеа вьокс 1пс З.опд 1пе яздоед 1сюд хое ипвьдоеа 1опд ьос к1оае аооЬ1е 1опд дооЬ1е Такой же, каки у мЬокс 1пе Ог -2147483648 до 2147463647 Такойже, каки у1опд ьпе Ог 0 до 4294967295 Шесть значащих цифр Десять значащих цифр Десять значащих цифр 16 32 32 32 32 64 60 !ВВВдяддд)ддд) В стандарп1е языка С++ минимальный размер и диагюзон изменения переменных, имеющих зпементарнью тип, не определен.
Вместо этого в нем проспю указано, чпю они должны соответствовать определенным условиям. Например, стандарт требует, члюбы переменная типа зпе 'Цвела естеспаенный размер, соответствующий архитектуре операционной системы". В любом случае, ее диапазон должен совпадать ипи превосходить диапазон изменения переменной данного типа, предусмотренный стандартом языка С. Каждый компилятор языка С++ задает размер и диапазон изменения переменных всех элементарных типов в заголовке <сзвв1се>.
Тип чозд используется лля определения функции, не возврашагощей НИКаКИХ Зиачений, либо для создания обобщенного указателя (8епепс ро)пгег). Оба эти случая мы рассмотрим в следуюших главах. ~~''-': Модификация основных типов За исключением типа чо16, основные типы данных могут иметь различные мйдид)икалюры (глод)Г1егэ).
которые используются для более точной настройки. Вот их список. | вздпеб пзгвздпвд 1опд вдохе 41 Глава 2. Выражению Ыелочисленные типы можно модифицировать с помощью ключевых слов вздпвд, вьокс, 1опд и цпв1дпвб. Символьные типы можно уточнять с помощью модификаторов цпв1дпеб и вздпеа. Кроме того, тип доцЬ1в можно модифицировать ключевым словом 1опд. В табл, 2П указаны все возможные комбинации типов данных, а также их минимальные лиапазоны и приблизительный размер в битах. (Эти значения относятся также и к языку С++.) Учтите, что в этой таблице приведены минимальные г)иипаэаяы переменных, а не типичные Например, в компьютерах, использующих арифметику дополнительных кодов (пчо'и сошр)егпепг апгпглег1с), минимальный диапазон целого числа простирается от — 32768 до 32767.