Идентификаторы, зарезервированные слова, литералы, управляющие последовательности

Идентификаторы, зарезервированные слова, литералы, управляющие последовательности



1. Какое назначение идентификаторов в C++? Правила создания идентификаторов.

Идентификатор представляет собой имя, которое присваивается переменной, константе, функции, собственному типу или другому элементу, который определяется пользователем. Идентификаторы могут состоять из одного или нескольких символов. Имена переменных должны начинаться из буквы или символа подчеркивания.

В языке C++ строчные и прописные символы рассматриваются как разные символы (в отличие от языка Паскаль и других языков).

Примеры идентификаторов:

x
max
Delta
my_method
w23x5

2. Какие элементы языка C++ запрещается использовать в качестве идентификатора?

В языке C++ нельзя использовать в качестве идентификаторов ключевые слова.

Список ключевых слов языка C++:

asm           auto           bool              break
case          catch          char              class
const         const_class    continue          default
delete        do             double            dinamic_cast
else          enum           explicit          export
extern        false          float             for
friend        goto           if                inline
int           long           mutable           namespace
new           operator       private           protected
public        register       reinterpret_cast  return
short         signed         sizeof            static
static_cast   struct         switch            template
this          throw          true              try
typedef       typeid         typename          union
unsigned      using          virtual           void
volatile      wchar_t        while

3. Что собой представляют литералы в языке C++?

Литералы – это фиксированные значения (константы), которые не могут быть изменены программой в процессе выполнения. Литералы (константы) могут иметь любой базовый тип данных. Способ представления каждой константы зависит от ее типа.

Примеры литералов:

23
-8.45
's'
L'A'
12.345F
4.3e-8
4.3E-8
1300L



4. Каким образом компилятор распознает целочисленные литералы?

Компилятор C++ пробует определить тип литерала самостоятельно по его значению.

Например, для 16-разрядной среды:

  • число 23 связывается с типом int;
  • число 300929 связывается с типом long int.

Если нужно принудительно установить значение long int, тогда к литералу нужно прибавить суффикс ‘L‘ или ‘l‘. Например:

20L
-300l

Если нужно установить значение литерала как беззнакового (с префиксом unsigned), тогда к литералу добавляется суффикс ‘U‘ или ‘u‘. Например:

1500u  // тип unsigned long int
1500U  // unsigned int
1500u  // unsigned int
1500ul // unsigned long int
1500UL // unsigned long int

5. Каким образом компилятор распознает литералы с плавающей запятой?

По умолчанию, все константы с плавающей запятой имеют тип double. Если нужно установить тип float, тогда к константе нужно прибавить суффикс ‘f‘ или ‘F‘. Если нужно установить тип long double, тогда к константе прибавляется суффикс ‘l‘ или ‘L‘.

Например:

9000.0009f        // float
8888.777F         // float
111.222           // double
0.33L             // long double
-56785757574.33l  // long double

6. Каким образом в C++ записываются шестнадцатеричные и восьмеричные литералы?

Часто в программах целесообразным есть использование шестнадцатеричной или восьмеричной систем исчисления вместо десятичной. Запись литералов в шестнадцатеричной или восьмеричной системах исчисления используется только для целочисленных типов.

В восьмеричной системе исчисления используются цифры от ‘0‘ до ‘7‘.

В шестнадцатеричной системе исчисления используются цифры от ‘0‘ до ‘9‘ и буквы от ‘А‘ до ‘F‘.

Восьмеричные литералы начинаются с префикса ‘0‘.

Шестнадцатеричные литералы начинаются с префикса ‘0x‘ или ‘0X‘.

Например:

010    // Число 10 в восьмеричной системе исчисления
055    // восьмеричная система исчисления
0x10   // шестнадцатеричная система исчисления
0XAFD  // шестнадцатеричная система исчисления

7. Что собой представляют управляющие последовательности символов?

В языках программирования существует ряд констант, которые невозможно ввести в исходный текст программы непосредственно из клавиатуры. Например, символ возврата каретки.

Кроме того, некоторые символы, такие как одинарные или двойные кавычки, в C++ имеют специальное назначение. Поэтому, их иногда, невозможно ввести напрямую.

Во избежание этой проблемы, в языке C++ (да и в других языках) введены так называемые управляющие последовательности символов. Эти последовательности заменяют символы, которые имеют специальное назначение или символы, которые невозможно ввести с клавиатуры напрямую.

Управляющие символьные последовательности языка C++:

\b - возврат на одну позицию
\f - переход к началу следующей страницы
\n - новая строка
\r - возврат каретки
\t - горизонтальная табуляция
\" - двойная кавычка
\' - одинарная кавычка
\\ - обратная дробная черта
\v - вертикальная табуляция
\a - звуковой сигнал
\? - вопросительный знак
\N - восьмеричная константа (где N - сама восьмеричная константа)
\x - шестнадцатеричная константа (где N - сама шестнадцатеричная константа)

Пример описания переменной, в которую заносится символ управляющей последовательности.

char c1, c2;
c1 = '\\';   // обратная дробная черта
c2 = '\"';   // двойная кавычка
c1 = '\23';  // 23 в восьмеричной системе исчисления
c2 = '\x5F'; // 5F в шестнадцатеричной системе исчисления

 


Связанные темы