Довідковий посібник для С
Мова програмування C++ - це C * , розширений запровадженням класів, inline-функцій, перевантажених операцій, перевантажених імен функцій, константних типів, посилань, операцій управління пам'яттю, перевірки параметрів функций. Коротко різницю між З++ і " старим З " наведено в #15. У цьому посібнику описується мова станом на Червень 1985 року.
2. Домовленості про лексику
Якщо вхідний потік розібраний на лексеми до даного символу, приймається, що наступна лексема містить найдовший рядок символів з тих, що можуть скласти лексему.
2.1 Коментарі
2.2 Ідентифікатори (імена)
Ідентифікатор - послідовність букв та цифр довільної довжини; перший знак може бути буквою; підкреслення '_' вважається за букву; літери у верхньому та нижньому регістрах є різними.
2.3 Ключові слова
Наступні ідентифікатори зарезервовані для використання як ключові слова і не можуть використовуватися іншим чином: Ідентифікатори signed і volatile зарезервовані для застосування в майбутньому.
2.4 Константи
Як описано нижче, є кілька видів констант. У #2.6 наводиться коротке зведення апаратних характеристик, які впливають їх розміри.
2.4.1 Цілі константи
Ціла константа, що складається з послідовності цифр, вважається восьмеричною, якщо вона починається з 0 (цифри нуль), і десятковою в іншому випадку. Цифри 8 та 9 не є восьмеричними цифрами. Послідовність цифр, якій передує 0х або 0Х, сприймається як шістнадцяткове ціле. До шістнадцяткових цифр входять літери від а або А до f або F, що мають значення від 10 до 15. Десяткова константа, значення якої перевищує найбільше машинне ціле зі знаком, вважається довгою (long); вісімкова ташістнадцяткова константа, значення якої перевищує найбільше машинне ціле зі знаком, вважається long; в інших випадках цілі константи вважаються int.
2.4.2 Явно задані довгі константи
Десяткова, вісімкова або шістнадцяткова константа, за якою безпосередньо стоїть l (латинська буква "ель") або L, вважається довгою константою.
2.4.3 Символьні константи
Символьна константа складається із символу, укладеного в одиночні лапки (апострофи), як, наприклад, "х". Значенням символьної константи є чисельне значення символу машинному наборі символів (алфавіті). Символьні константи вважаються даними типу int.
Деякі неграфічні символи, одиночна лапка ' і зворотна коса \, можуть бути представлені у відповідність до наступної таблиці escape-послідовностей:
Escape-послідовність \ddd складається із зворотної косою, за якою слідують 1, 2 або 3 вісімкові цифри, що задають значення необхідного символу. Спеціальним випадком такої конструкції є \0 (не слідує жодної цифри), що задає порожній символ NULL. Escape-послідовність \xddd складається із зворотної косою, за якою слідують 1, 2 або 3 шістнадцяткові цифри, що задають значення необхідного символу. Якщо наступний за зворотною косою символ не є одним із перерахованих, зворотна коса ігнорується.
2.4.4 Константи з плаваючою точкою
Константа з плаваючою точкою складається з цілої частини, десяткової точки, мантиси, е або Е і цілого показника ступеня (можливо, але не обов'язково зі знаком). Ціла частина та мантиса обидві складаються з послідовності цифр. Ціла частина або мантіса (але не обидві відразу) може бути опущена; або десяткова точка, або е(Е) разом з цілим показником ступеня (але не обидвічастини одночасно) може бути опущена. Константа з плаваючою точкою має тип double.
2.4.5 Перераховані константи
2.4.6 Описані константи
Об'єкт (#5) будь-якого типу може бути визначений як той, що має постійне значення у всій області видимості (#4.1) його імені. У разі покажчиків для цього використовується декларатор *const; для об'єктів, які є покажчиками, використовується описник const (#8.2).
Рядок є послідовність символів, укладена в подвійні лапки: ". ". Рядок має тип "масив символів" і клас пам'яті static (див. #4 нижче), він ініціалізується заданими символами. Всі рядки, навіть якщо вони записані однаково, є різними. Компілятор розташовує в кінці кожного рядка нульовий (порожній) байт \0 з тим, щоб програма, що сканує рядок, могла знайти її кінець. У рядку перед символом подвійної лапки "обов'язково повинен стояти \; крім того, можуть використовуватися ті ж escape-послідовності, що були описані для символьних констант. І, нарешті, символ нового рядка може з'являтися тільки відразу після \; тоді обидва, - \ символ нового рядка - ігноруються.
2.6 Характеристики апаратного забезпечення
У наведеній нижче таблиці зібрані деякі харктеристики апаратного забезпечення, що відрізняються від машини до машини.
| DEC VAX-11 ASCII | Motorola 68000 ASCII | IBM 370 EBCDIC | AT&T 3B ASCII | |
| char | 8 біт | 8 біт | 8 біт | 8 біт |
| int | 32 біт | 16 біт | 32 біт | 16 біт |
| short | 16 біт | 16 біт | 16 біт | 16 біт |
| long | 32 біт | 32 біт | 32 біт | 32 сторінки |
| плавати | 32 сторінки | 32 сторінки | 32 сторінки | 32 сторінки |
| подвійний | 64 сторінки | 64 сторінки | 64 сторінки | 64 сторінки |
| покажчик | 32 сторінки | 32 сторінки | 24 сторінки | 32 сторінки |
| діапазон float | +_10E+_38 | +_10E+_38 | +_10E+_76 | +_10E+_38 |
| діапазон подвійний | +_10E+_38 | +_10E+_38 | +_10E+_76 | +_10E+_308 |
| тип char | знаковий | ми підписуємо | ми підписуємо | ми підписуємо |
| поле типу | знаковий | ми підписуємо | ми підписуємо | ми підписуємо |
| порядок | праворуч | зліва | зліва | зліва |
| полюс | зліва | направо | направо | направо |