Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема 3.2 (ч.1). Команды и данные. Абстракция да...docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
624.15 Кб
Скачать

3.2.2.3 Постоянные

Постоянной называется неидентифицированный или идентифицированный скалярный фраг­мент памяти3, содержимое которого не может быть изменено во время исполнения программы.

Постоянная определяется правилом:

постоянная ::= постоянная логического типа | постоянная символьного типа |

постоянная целого типа | постоянная действительного типа |

постоянная строкового типа;

Постоянная логического типа определяется правилом:

постоянная логического типа ::= (true | TRUE)(истина) | (false | FALSE)(ложь);

Постоянная символьного типа определяется правилами:

символ национального алфавита ::=

А | а |Б |б |В |в |Г| |г| Ґ| ґ| Д| д |Е |е |Є |є |Ж |ж |З| з |И |и |І |і |Ї |ї | Й |й |К |к |Л |л |М |м |Н |н |

О |о | П |п |Р |р |С |с |Т |т |У |у |Ф |ф |Х |х | Ц |ц |Ч |ч |Ш |ш |Щ |щ |Ь| ь |Ю |ю |Я |я;

escape-последовательность(рис. 4.1)::=

одиночная escape-последовательность |

восьмеричная escape-последовательность |

шестнадцатиричная escape-последовательность;

одиночная escape-последовательность ::= \’ | \” | \? | \\ | \a | \b | \f | \n | \r | \t | \v;

восьмеричная escape-последовательность ::=

«\»,восьмеричная цифра, [восьмеричная цифра, [восьмеричная цифра] ];

шестнадцатиричная escape-последовательность ::= (\x | \X), шестнадцатиричная

цифра, [шестнадцатиричная цифра, [шестнадцатиричная цифра] ];

постоянная символьного типа ::=

[L], «‘», ( { символ алфавита | символ национального алфавита | escape-последовательность | символ UNICODE4 | } ), «‘»;

Если символьная постоянная содержит один символ, то она считается данным типа char, в противном случае – данным типа int. Если запись постоянной начинается с префикса «L», то она считается данным типа wchar_t («широкий символ»). Примеры постоянных символьного типа: ‘A’, ‘i’, ‘\n’, L’\x004d’(символ ‘M’).

Постоянная целого типа определяется правилом:

постоянная целого типа ::=

[знак], [0, восьмеричная цифра, { восьмеричная цифра }], [U | u] (unsigned), [L | l](long) |

[знак], [десятичная цифра, { десятичная цифра }, [U | u], [L | l] |

[знак], [(0x | 0X)] шестнадцатиричная цифра, { шестнадцатиричная цифра },

[U | u], [L | l];

Примеры постоянных целого типа: -19(десятичная), 017(восьмеричная), 0x1f(шестнадцатирич­ная), 1234L(десятичная четырехбайтовая).

Постоянная действительного (вещественного) типа определяется правилами:

целое ::= десятичная цифра, { десятичная цифра };

дробная часть ::= { целое }, [ [e | E] [знак], целое];

постоянная действительного типа ::=

[знак], [целое], «.», [дробная часть], [F | f](float), [L | l](long doub­le);

Считается, что постоянная действительного типа имеет тип double, если в ее записи не использован суффикс явного определения типа (F, f, L, l). Например, описание -0.2E+6F задает отрицательную действительную постоянную -200 000.0 типа float. Примеры постоянных действительного типа: 1.2, -.6(0,6), 1.2e2(120.0).

Постоянная строкового типа определяется правилами:

постоянная строкового типа::=

[L], { ", { символ алфавита | символ национального алфавита | escape-последовательность | символ UNICODE}, " };

Если запись постоянной начинается с префикса «L», то все символы строки считаются данными типа wchar_t («широкий символ»), в противном случае - данными типа char. Длина построянной строкового типа на 1 больше количества записанных в ней символов, поскольку транслятор добавляет в конец такой константы нуль-терминатор «\0» как признак окончания строки (рисунок 3.2.1).

Рисунок 3.2.1

Две постоянных строкового типа, записанные под­ряд, автоматически объединяются в одну (например, "Здравствуй," " мир!" преобразовывается в "Здравствуй, мир!". Постоянную строкового типа можно записывать в нескольких смежных строках, разделяя строки символом «\», например, так:

Добридень. \

Можна починати роботу.”.

Другие примеры постоянных строкового типа: “Первая строка\nВторая строка”, L“Hello, \004dартин”(“Hello, Мартин”).

Для использования в программе идентифицированных постоянных их объявляют согласно правилам:

инициализатор ::= постоянная;

объявление постоянных ::= const,

[тип данного], идентификатор, = инициализатор,

{ «,»,[тип данного], идентификатор, = инициализатор ;»;

Постоянную при объявлении обязательно нужно инициализировать (т.е. присвоить ей значение), например: const int a=10;.

Идентифицированные постоянные в языке С++ могут быть типизированные и нетипизированными. Типизированная постоянная - это именованная постоянная, тип значения которой задан явно. Нетипизированная постоянная - это именованная постоянная, тип значения которой в объявлении не указан и определяется автоматически по её инициализатору. Примеры объявлений постоянных:

  1. const float pi = 3.141592; // постонная «pi» () типа «float»

  2. const MaxInt = 32767; // постоянная «MaxInt» типа «int»

  3. const Ch = ‘Б’; // постоянная «Ch» типа «int»

  4. const double X=1.2, Y=3.4; // постоянные «X» и «Y» типа «double»