Справочно ръководство за C
Езикът за програмиране C++ е C* разширен с въвеждането на класове, вградени функции, претоварени операции, имена на претоварени функции, константни типове, препратки, операции за управление на свободна памет, проверка на функционални параметри. Кратко резюме на разликите между C++ и "стария C" е дадено в #15. Това ръководство описва езика от юни 1985 г.
2. Конвенции в речника
Ако входният поток е анализиран на токени до даден символ, се приема, че следващият токен съдържа най-дългия низ от знаци, който може да съставлява токена.
2.1 Коментари
2.2 Идентификатори (имена)
Идентификатор - поредица от букви и цифри с произволна дължина; първият знак трябва да е буква; долната черта '_' се брои за буква; главните и малките букви са различни.
2.3 Ключови думи
Следните идентификатори са запазени за използване като ключови думи и не могат да се използват по друг начин: Подписаните и променливите идентификатори са запазени за бъдеща употреба.
2.4 Константи
Както е описано по-долу, има няколко вида константи. #2.6 дава кратко резюме на характеристиките на хардуера, които влияят на техните размери.
2.4.1 Целочислени константи
Цяла константа, състояща се от поредица от цифри, се счита за осмична, ако започва с 0 (цифра нула), и десетична в противен случай. Цифрите 8 и 9 не са осмични цифри. Поредица от цифри, предшествана от 0x или 0X, се третира като шестнадесетично цяло число. Шестнадесетичните цифри включват букви от a или A до f или F, имащи стойности от 10 до 15. Десетична константа, чиято стойност е по-голяма от най-голямото машинно цяло число със знак, се счита за дълга; осмичен ишестнадесетична константа, чиято стойност е по-голяма от най-голямото машинно цяло число със знак, се третира като дълго; в противен случай целочислените константи се считат за int.
2.4.2 Изрично дефинирани дълги константи
Десетична, осмична или шестнадесетична константа, непосредствено последвана от l (латинската буква "el") или L, се счита за дълга константа.
2.4.3 Символни константи
Символна константа се състои от знак, ограден в единични кавички (апострофи), като например 'x'. Стойността на символна константа е числовата стойност на знака в машинния набор от символи (азбука). Символните константи се считат за данни от тип int.
Някои неграфични знаци, единичните кавички ' и обратната наклонена черта \, могат да бъдат представени съгласно следната таблица с екраниращи последователности:
Екраниращата последователност \ddd се състои от обратна наклонена черта, последвана от 1, 2 или 3 осмични цифри, указващи стойността на желания знак. Специален случай на тази конструкция е \0 (не следват цифри), който указва нулевия знак. Екраниращата последователност \xddd се състои от обратна наклонена черта, последвана от 1, 2 или 3 шестнадесетични цифри, указващи стойността на желания знак. Ако знакът след обратната наклонена черта не е един от изброените знаци, тогава обратната наклонена черта се игнорира.
2.4.4 Константи с плаваща запетая
Константата с плаваща запетая се състои от цяла част, десетична запетая, мантиса, e или E и цяло число на експонента (по избор, но не непременно със знак). И целочислената част, и мантисата се състоят от поредица от цифри. Цялата част или мантисата (но не и двете) могат да бъдат пропуснати; или десетична точка, или e(E) заедно с цяло число (но не и дветечасти едновременно) могат да бъдат пропуснати. Константата с плаваща запетая е от тип double.
2.4.5 Изброени константи
2.4.6 Описани константи
Обект (#5) от всеки тип може да бъде дефиниран да има постоянна стойност в целия обхват (#4.1) на неговото име. В случай на указатели, деклараторът *const се използва за постигане на това; за обекти, които не са указатели, използвайте спецификатора const (#8.2).
Низът е поредица от символи, оградени в двойни кавички: ". ". Низът е от тип "масив от знаци" и класът за съхранение е статичен (вижте #4 по-долу), инициализира се с дадените знаци. Всички низове, дори ако са написани по един и същи начин, са различни. Компилаторът поставя нулев (празен) байт \0 в края на всеки ред, така че програмата, която сканира реда, да може да намери края на реда. В низ символът с двойни кавички " винаги трябва да се предшества от \; освен това могат да се използват същите последователности за екраниране, както е описано за символни константи. И накрая, символът за нов ред може да се появи само непосредствено след \; тогава както \, така и символът за нов ред се игнорират.
2.6 Хардуерни спецификации
Следната таблица обобщава някои от хардуерните спецификации, които варират от машина до машина.
DEC VAX-11 ASCII | Motorola 68000 ASCII | IBM 370 EBCDIC | AT&T 3B ASCII | |
въглен | 8 бита | 8 бита | 8 бита | 8 бита |
вътр | 32 бита | 16 бита | 32 бита | 16 бита |
къс | 16 бита | 16 бита | 16 бита | 16 бита |
дълго | 32 бита | 32 бита | 32 бита | 32 страници |
плавам | 32 страници | 32 страници | 32 страници | 32 страници |
двойно | 64 страници | 64 страници | 64 страници | 64 страници |
показалец | 32 страници | 32 страници | 24 страници | 32 страници |
диапазон плаващ | +_10E+_38 | +_10E+_38 | +_10E+_76 | +_10E+_38 |
обхват двойно | +_10E+_38 | +_10E+_38 | +_10E+_76 | +_10E+_308 |
тип char | емблематичен | подписваме | подписваме | подписваме |
тип поле | емблематичен | подписваме | подписваме | подписваме |
поръчка | отдясно | наляво | наляво | наляво |
полюс | наляво | надясно | надясно | надясно |