Справочно ръководство за 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 ASCIIMotorola 68000 ASCIIIBM 370 EBCDICAT&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емблематиченподписвамеподписвамеподписваме
тип полеемблематиченподписвамеподписвамеподписваме
поръчкаотдясноналявоналявоналяво
полюсналявонадяснонадяснонадясно