Довідковий посібник для С

Мова програмування 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 ASCIIMotorola 68000 ASCIIIBM 370 EBCDICAT&T 3B ASCII
char8 біт8 біт8 біт8 біт
int32 біт16 біт32 біт16 біт
short16 біт16 біт16 біт16 біт
long32 біт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знаковийми підписуємоми підписуємоми підписуємо
поле типузнаковийми підписуємоми підписуємоми підписуємо
порядокправоручзлівазлівазліва
полюсзліванаправонаправонаправо