Конспект лекций по С++ (1018900), страница 2
Текст из файла (страница 2)
\xdd ASCII символ в шестнад-
цатиричном представлении
Табл. 2.2. ESC- последовательности
Если наклонная черта влево предшествует символу, не включенному в этот список, то наклонная черта влево игнорируется, а символ представляется как литеральный. Например, изображение \c
представляет символ "c" в литеральной строке или константе-символе.
Последовательности \ddd и \xdd позволяют задать любой символ в ASCII (Американский стандартный код информационного интерфейса) как последовательность трех восьмеричных цифр или двух шестнадцатеричных цифр. Например, символ пробела может быть задан как \010 или \x08. Код ASCII "нуль" может быть задан как \0 или \x0 . В восьмеричной ESC- последовательности могут быть использованы от одной до трех восьмеричных цифр.
Например, символ пробела может быть задан как \10 . Точно так же в шестнадцатеричной ESC- последовательности могут быть использованы от одной до двух шестнадцатеричных цифр. Так, шестнадцатеричная последовательность для символа пробела может быть задана как \x08 или \x8 .
Замечание:
Когда используется восьмеричная или шестнадцатеричная ESCпоследовательность в строках, то нужно полностью задавать все цифры ESC- последовательности (три цифры для восьмеричной и две цифры для шестнадцатеричной ESC- последовательностей). Иначе, если символ непосредственно следующий за ESC- последовательностью, случайно окажется восьмеричной или шестнадцатеричной цифрой, то он проинтерпретируется как часть последовательности. Например, строка \x7Bell при выводе на печать будет выглядеть как {ell , поскольку \x7B проинтерпретируется как символ левой фигурной скобки({) . Строка \x07Bell будет правильным представлением сим-
вола "звонок" с последующим словом Bell.
ESC- последовательности позволяют посылать неграфические управляющие символы к внешним устройствам. Например, ESC- последовательность\033 часто используется как первый символ команд управления терминалом и принтером. Неграфические символы всегда должны представляться ESC-последовательностями, поскольку, непосредственное использование в программах на Си неграфических символов будет иметь непредсказуемый результат.
Наклонная черта влево (\) помимо определения ESC-последовательностей используется также, как символ продолжения строки в препроцессорных определениях.
Если символ "новая строка" следует за наклонной чертой влево, то новая строка игнорируется и следующая строка рассматривается, как часть предыдущей строки.
Операции
Операции- это специальные комбинации символов, специфицирующие действия по пробразованию различных величин. Компилятор интерпретирует каждую из этих комбинаций как самостоятельную единицу, называемую лексемой (token).
В Табл. 2.3 представлен список операций. Операции должны использоваться точно так, как они представлены в таблице: без пробельных символов между символами в тех операциях, которые представлены несколькими символами.
Операция sizeof не включена в эту таблицу. Она скорее представляет собой ключевое слово, чем символ.
-------------------------------------------------
Операция Наименование -------------------------------------------------
! Логическое НЕ
~ Побитовое дополнение
+ Сложение
- Вычитание, арифмети-
ческое отрицание
* Умножение
/ Деление
% Остаток
<< Сдвиг влево
>> Сдвиг вправо
< Меньше
<= Меньше или равно
> Больше
>= Больше или равно
== Равно
!= Не равно
& Побитовое И, адрес от
| Побитовое включающее ИЛИ
^ Побитовое исключающее ИЛИ
&& Логическое И
|| Логическое ИЛИ
' Последовательное выполне-
ние (запятая)
?: Операция условного вы-
ражения
++ Инкремент
-- Декремент
= Простое присваивание
+= Сложение с присваиванием
-= Вычитание с присваиванием
*= Умножение с присваиванием
/= Деление с присваиванием
%= Остаток с присваиванием
>>= Сдвиг вправо с присваива-
иванием
<<= Сдвиг влево с присваива-
нием
&= Побитовое И с присваива-
нием
|= Побитовое включающее ИЛИ
с присваиванием
^= Побитовое исключающее ИЛИ
с присваиванием
-------------------------------------------------------
Табл. 2.3. Операции
Замечание:
Операция условного выражения ?: -это тернарная, а не двухсимвольная операция. Формат условного выражения следующий: <expression>?<expression>:<expression>
Константы
Константа- это число, символ или строка символов. Константы используются в программе как неизменяемые величины. В языке Си различают четыре типа констант: целые константы, константы с плавающей точкой, константы-символы и строчные литералы.
Целые константы
Целая константа- это десятичное, восьмеричное или шестнадцатеричное число, которое представляет целую величину. Десятичная константа имеет следующий формат представления:
<digits>,
где <digits> - это одна или более десятичных цифр от 0 до 9.
Восьмеричная константа имеет следующий формат представления:
0<odigits>,
где <odigits> - это одна или более восьмеричных цифр от 0 до 7. Запись ведущего нуля необходима.
Шестнадцатеричная константа имеет один из следующих форматов представления:
0x<hdigits>
0X<hdigits>,
где <hdigits> одна или более шестнадцатеричных цифр. Шестнадцатеричная цифра может быть цифрой от 0 до 9 или
буквой (большой или малой) от A до F. В представлении константы допускается "смесь" больших и малых букв. Запись ведущего нуля и следующего за ним символа x или X необходима.
Пробельные символы не допускаются между цифрами целой константы. В Табл. 2.4 иллюстрируются примеры целых констант.
-----------------------------------------------------------
Десятичные Восьмеричные Шестнадцатеричные
константы константы константы
-----------------------------------------------------------
10 012 0xa или 0xA
132 0204 0x84
32179 076663 0x7dB3 или 0x7DB3
-----------------------------------------------------------
Табл. 2.4 Примеры констант
Целые константы всегда специфицируют положительные величины. Если требуется отрицательные величины, то необходимо сформировать константное выражение из знака минус и следующей за ним
константы. Знак минус рассматривается как арифметическая операция.
Каждая целая константа специфицируется типом, определяющим ее представление в памяти и область значений. Десятичные константы могут быть типа int или long.
Восьмеричные и шестнадцатеричные константы в зависимости от размера могут быть типа int, unsigned int, long или unsigned long. Если константа может быть представлена как int, она специфицируется типом int. Если ее величина больше, чем максимальная положительная величина, которая может быть представлена типом int, но меньше величины, которая представляется в том же самом числе бит как и int, она задается типом unsigned int. Наконец, константа, величина которой больше чем максимальная величина, представляемая типом unsigned int, задется типом long или unsigned long, если это необходимо. В Табл. 2.5 показаны диапазо-
ны величин восьмеричных и шестнадцатеричных констант, представимых соответствующими типами на машине, где тип int имеет длину 16 бит.
-----------------------------------------------------------
Шестнадцатеричные Восьмеричные Тип
диапазоны диапазоны
-----------------------------------------------------------
0x0-0x7FFF 0-077777 int
0x8000-0xFFFF 0100000-0177777 unsigned int
0x10000-0x7FFFFFFF 0200000-017777777777 long
0x80000000-0xFFFFFFFF 020000000000-030000000000 unsigned long
-----------------------------------------------------------
Табл. 2.5 Диапазоны величин восьмеричных и
шестнадцатеричных констант
Важность рассмотренных выше правил состоит в том, что восьмеричные и шестнадцатеричные константы не содержат "знаковых" расширений, когда они преобразуются к более длинным типам (преобразование типов смотри в разделе 5 "Выражения и присваивания").
Программист может определить для любой целой константы тип
long, приписав букву "l" или "L" в конец константы. В Табл. 2.6 показаны примеры целых констант.
------------------------------------------------------------
Десятичные Восьмеричные Шестнадцатеричные
константы константы константы
------------------------------------------------------------
10L 012L 0xaL или 0xAL
79l 0115l 0x4fl или 0x4Fl
------------------------------------------------------------
Табл. 2.6 Примеры целых констант типа long
Константы с плавающей точкой
Константа с плавающей точкой- это действительное десятичное положительное число. Величина действительного числа включает целую, дробную части и зкспоненту. Константы с плавающей точкой имеют следующий формат представления:
[<digits>][.<digits>][E[-]<digits>],
где <digits> - одна или более десятичных цифр (от 0 до 9),
а E или e -символ экспоненты. Целая или дробная части константы могут быть опушены, но не обе сразу. Десятичная точка может быть опущена только тогда, когда задана экспонента.
Экспонента состоит из символа экспоненты, за которым следует целочисленная величина экспоненты, возможно отрицательная.
Пробельные символы не могут разделять цифры или символы
константы.
Константы с плавающей точкой всегда специфицируют положительные величины. Если требуются отрицательные величины, то необходимо сформировать константное выражение из знака минус и следующей за ним константы. Знак минус рассматривается как арифметическая операция.
Примеры констант с плавающей точкой и константных выраже-
ний:
15.75
1.575E1
1575e-2
-0.0025
-2.5e-3
25e-4
Целая часть константы с плавающей точкой может быть опущена, например:
.75
.0075e2
-.125
-.175E-2
Все константы с плавающей точкой имеют тип double.
Константа-символ
Константа-символ- это буква, цифра, знак пунктуации или ESC- символ, заключенные в одиночные кавычки. Величина константы-символа равна значению представляющего ее кода символа.
Константа-символ имеет следующую форму представления:
'<char>',
где <char> может быть любым символом иэ множества представимых символов, включая любой ESC- символ, исключая одиночную кавычку ('), наклонную черту влево (\) и символ новой строки.
Чтобы использовать одиночную кавычку или наклонную черту влево в качестве константы-символа, необходимо вставить перед этими знаками наклонную черту влево. Чтобы представить символ новой строки, необходимо использовать запись '\n'.
----------------------------------------------
Константа Название величины
----------------------------------------------
'a' Малая буква а
'?' Знак вопроса
'\b' Знак пробела
'0x1B' ASCII ESC- символ
'\'' Одиночная кавычка
'\\' Наклонная черта влево
-------------------------------------------------
Табл. 2.7 Примеры констант-символов.
Константы-символы имеют тип int.
Строковые литералы
Строковый литерал- это последовательность букв, цифр и символов, заключенная в двойные кавычки. Строковый литерал рассматривается как массив символов, каждый элемент которого представляет отдельный символ. Строковый литерал имеет следующую форму представления:
"<characters>" ,
где <characters> - это нуль или более символов из множества представимых символов, исключая двойную кавычку ("), наклонную черту влево (\) и символ новой строки. Чтобы использовать символ новой строки в строковом литерале, необходимо напечатать наклонную черту влево, а затем символ новой строки.















