Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004 (1160791), страница 24
Текст из файла (страница 24)
[5] Нс забывайте использовать директиву №тс(дг?е для указания фаиловс нужнымп вам средствами; 6 З.З. [6] Помните, что средства стандартной библиотеки определены в пространстве имен эЫ; э 3.3. [7] Пользуйтесь э1г1ая вместо сйаг', э 3.5, 6 3.6. [8] Если сомневаетесь — пользуйтесь вектором с проверкой диапазона (таким как 4гес); 9 3.7.2.
[9] Используйте иес1ог<Т>, ГМ<Т) и тар<Т~, а не ТЦЯ 3.?.1, 9 3.7.3, 9 3.7.4. [10] При добавлении элементов в контейнер пользуйтесь ризЬ Ьасй() или Ьасй пгэег1ег(); э" 3.7.3, 9 3.8. [11] Используйте риэй Ьасй () с эес1ог, а не геа(?ос () со встроенным массивом; 9 3.8. [12] Перехватывайте типичные исключения в функции та1п (); 9 3.7.2.
ЧАСТЪ ПЕРВАЯ СНОВНЫЕ СРЦСТВА В этой части описываются встроенные типы языка С++ и основные средства построения на их основе программ. Характеризуется подмножество Сч-ч-, совместимое с языком С. Анализируются дополнительные средства С++, поддерживающие традиционные стили программирования. Обсуждаются базовые возможности составления программ из логических и физических частей. 4.
Типыи объявления 5. Указатели, массивы и структуры 6. Выражения и инструкции 7. Функции ... 8. Пространства имен и исключения 9. Исходные файлы и программы 107 .... 127 147 185 ..... 209 ...,... 2 4 1 Типы и обьявления Не соглашайся ни на шпо, кролче говершенства1 Анонимный автор Совершенство «>ого>игается только к>коме>апу полного краха.
— К. Н. ??аркин«он Типы — фундэментальные типы — логические значения — символы— символьные литералы — целые — целые литералы — типы с плавающей точкой †.литералы с плаваюшей точкой — размеры — иоМ вЂ” перечислен пав объявления — имена - - область видимости — инициализация — объекты ?уреч?е? — советы — упражнения. 4.1. Типы Рассмотрим выражение: х= у +Я2), Чтобы это выражение имело смысл в программе на С ":, имена к, у и ?'должны оы ь подхолящнм образом объявлены.
То есть программист должен указать, что существуют некие сущности с нменамн к, у и ?, и для их типов имеют смысл операции = (присваивание), -' (сложение) и (1 (вызов функции). Каждое пмя (идентификатор) в программе на С-ьч- имеет связанный с ним тип. Ои опреде.лает, какие операцш> применимы к имени (то есть к сущности, связанной с этим именем) и как эти операции интерпретируются.
Напрпгиер, объявления //х — перел~саная г плавающей точкой //у — целая переменная с начальним значенаем ? /// — Функция с аргумента ч целого тапа, // возврацаю«цая чагло с плаваю>цей точкой ??оаг х, ?агу= 7, ?? оа«я! и«> слетают предыдущий пример осмысленным. Так как переменная у объявлена как целая, ее можно присваивать, использовать в арифметических выражениях и т.
д. С другой стороны, ? объявлена как функция с аргументом целого типа, поэтому ее можно вызывать с подходягцим аргументом. В этой главе описываются фундаментальные типы Я 4.1.1) и объявления Ц 4.9). Примеры, приведенные в ней, просто демонстрируют свойства языка; не подразуме- Глава 4.
Типы и объявления 108 вается, что они делают что-нпбудь полезное. Более подробные и реалистичные и римеры оставлены до следующих глав, когда большая часть языка будет уже описана. Здесь же просто изложены базовые элементы, из которых строится программа на С-ь ь. Для написания закопченного реального проекта па Сз-ь и, особенно, для того, чтобы понимать код, написанный другими, вам необходимо знать эти элементы, освоить терминологию ги овладеть синтаксисом. Тем не менее, полное понимание всех деталей, упомянутых в этой главе, не является обязательным требованием для чтения последующих глав.
Следовательно, при желании вы можете бегло просмотреть данную главу, обратив внимание на основные концепции, и вернуться к ней позднее прп необходимости. 4.1.1. Фундаыентальные типы В С-ь-ь имеется набор фундаментальных типов, отражающих характерные особенности организации памяти большинства компьютеров и наиболее распространенные способы хранения данных: гг 4.2 Логический тип (Ьоо() з 4.3 Символьные типы (например, сйаг) ч( 4А Пелые типы (например, гп1) й 4.5 Типы с плавающей точкой (напрпмер, ггоиЫе) Кроме того, пользователь может определцть з 4.8 Перечислпмые типы для представления значений из конкретного множества (епигп) Также имеется э 4.7 Тип иоЫ, используемый для указания па отсутствгле информации.
Кроме этих тнпов, мы можем сконструировать н другие: з( 5.1 Указатели (например, ггг1*) г) 5.2 Массивы (например, сйаг1)) з 5.5 Ссылки (наггрггьгер, г(оиЫей) ч 5.7 Структуры данных и классы (глава 10) Логические, символьные и целые типы вместе называются интегрвльныгги типаии. Интегральные типы, вместе с типами с плавающей тачкой, называются ирифггетическилш пгипвгви. Перечисления и классы (глава 10) называются тггпилги, определяе.иыжи пользователе и (нлп пользовательскими типами), патаыу что в отличие от фунламентальных типов, которые можно использовать оез предварительного объяв.ления, анн должны быть определены пользователем.
Другие типы называются всгпроеннылги тггггазггг. Интегральные типы и типы с плавающей точкой могут иметь различные размеры, предоставляя программисту возможность выбора количества используемой памяти, точности н допустимого диапазона значений (б 4.6). Предполагается, что в компьютере имеются байты для хранения символов, слова для хранения целых чисел и выполнения арифметических операций с пимп, нечто, подходящее для операций с плавагощей точкой, а также адреса для обращения к этим сущностям. Фундаментальные гппы С.ь-ь совместно с указателяхпи и массивами предоставляют программисту понятия машинного уровня, но в форме, достаточно независимой от реализации. В большинстве приложений можно обойтись Ьоо1 для логических значеньш, гп1— для целых, с)гиг — для символов п с(оиЫе — для чисел с плавающей точкой. Остальные 109 4.3.
Символьные типы фундаментальные типы являются варпациямлл, предназначенными для оптимизации и решения других специальных задач. Ими лучше не пользоваться, пока не возникла острая необходимость. Однако пх нужно знать, побы читать код на С и С ' ~-. 4.2. Логические типы Логические переменные (Ьоо1) могут принимать одно из двух значений: истина (1гае) или ложь 1/аЬе). Логические переменные используются для выражения результатов логических операций. Например: ио)г)Яш1 а, ш1 Ь) Ьоо!61= а==Ь; //= означает пригваивание, == — проверка но равенство 0- ) Если а и Ь имеют одинаковые значения, 61 будет равно 1 ие, в противном случае — ~аЬе.
Распространенным примером использования логического тглпа является анализ выполнения некоторого условия (предиката), реализуемьш в виде вызова функции. Например: 6оо!Ь орел)Р11е ); Ьоо1 дгеа1ег )!п1а, 1п1 Ь) ) гелигп аиЬ, ) По определению, 1гие имеет значенгле 1 при преобразовании к целому типу, а /аЬе— О. И наоборот, целые можно неявно преобразовать в логические значения; при этом ненулевые целые преобразуются в 1 ие, а ноль — в~аЬе. Например: Ьоол Ь = 7; //Ьоо117) означает1гие; 6 прггнгглгаегп значение 1ггге ш1 л = 1гие; //ггг111те) равно 1;лпролет значение 1 В арифметических и логических выражениях логические значения преобразуются в целые (1п1); арифметические и битовые логические операции выполняются над преобразованными величинами.
Если результат приводится обратно к логическому типу, 0 преобразуется в /аде, а ненулевое значение — в 1гие. ооЫд)) Ьоо1 а = 1гие, Ьоо1 Ь = лгие, 6оо1 к = алЬ; //а лЬ равно 2, позтолгу х сгпановится 1ггге Ьоо1 у = а) Ь; //а)6равно 1, поэгнолу у становится 1гие ) Указатель можно неявно преобразовать в Ьоо! Я В.б.2.5). Ненулевой указатель при- ьплмает значение 1гие, нулевой — /аЬе. 4.3. Символьные типы В переменной типа айаг может храниться один из символов, имеющихся в наборе символов реалллзации, Например: сЬаг сЬ = 'а'; Глава 4. Типы и объявления 110 Практи ~ески всегда на объект типа сйаг отводится 8 бит, так что существуют 256 различных значений этого типа. Как правила, набор символов основывается на!80- 646.
К числу таких наборов относится АВСП, вкчючаюший в себя символы вашей клавиатуры. Множество проблем возникает из-за того, что этот набор символов стандартизован лишь частично (э В 3). Между наборами символов, поддерживающими различные национальные алфавиты, и даже между наборами символов, поддерживающими одни и тот же национальный алфавит, имеются большие отличия.