Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Символьные (литерные) константы
Символьные константы – это один или два символа, заключенные в апострофы. Символьные константы, состоящие из одного символа, занимают в памяти один байт и имеют стандартный тип char. Примеры: 'z', '*', '\012', '\0', '\n' – односимвольные константы. Двухсимвольные константы занимают два байта и имеют тип int, при этом первый символ размещается в байте с меньшим адресом (о типах данных рассказывается в следующем разделе). 'ab', '\x07\x07', '\n\t' – двухсимвольные константы Внутри апострофов может быть любой символ, имеющий изображение. Однако в ПК есть символы, не имеющие графического изображения. Это, как правило, управляющие символы, например символ перехода на новую строчку. Для изображения таких символов используется комбинация из нескольких символов, начинающаяся с обратной косой черты. Последовательности символов, начинающиеся с обратной косой черты, называются управляющими эскейп - последовательностями (escape-sequence). Эскейп - последовательности используются: · для записи символов, не имеющих графического изображения (например, \a — звуковой сигнал); · для записи символов: символа апострофа ('), обратной косой черты (\), знака вопроса (?) и кавычки ("); · для записи любого символа с помощью его шестнадцатеричного или восьмеричного кода, например, \073, \0xF5. Числовое значение кода должно находиться в диапазоне от 0 до 255. В табл. 1.4 приведены допустимые значения эскейп-последовательностей. Управляющая последовательность интерпретируется как одиночный символ. В таблице 000 – строка от одной до трех восьмеричных цифр, hh – строка из одной или двух шестнадцатеричных цифр. Последовательность '\0' обозначает пустую литеру. Таблица 1.4 Допустимые ESC–последовательности в языке С++
Для использования внутренних кодов символов нужна таблица, в которой каждому символу компьютера соответствует числовое значение его кода в десятичном, восьмеричном и шестнадцатеричном представлении. На IBM-совместимом ПЭВМ применяется таблица кодов ASCII. Работу с символьными константами иллюстрирует программа: #include< iostream.h> void main() {char c; int i; c = 'ab'; cout < < c < < '\t'; i = ' ab '; cout < < i < < '\t'; i = c; cout < < i < < '\t'; i = ' ba '; c = i; cout < < c < < '\t'; } В результате программы на экран будет выведено: a 25185 97 b здесь 25185 – двухбайтовое целое число, а 97 – код символа 'a '. Если выводить на экран односимвольную константу, то будет выведено изображение символа, но если эту же константу поместить, например, в арифметическое выражение, то значением константы будет ее десятичный внутренний код. Для 32-разрядного компилятора допустимы константы – несколько символов, заключенных в апострофы, которые называются мультисимвольными (multicharacter literal) и имеют тип int. Строковые константы Строка или строковая константа- это последовательность символов, заключенная в кавычки. Внутреннее представление строки в памяти таково: все символы размещаются подряд, и каждый символ занимает 1 байт, в котором размещается внутренний код символа. А в конце строки компилятор помещает еще один символ, называемый байтовым нулем '\0'. Этот символ как любой другой занимает в памяти 1 байт, 8 двоичных разрядов, в которых находятся нули. Среди символов строковой константы могут быть эскейп-последовательности, например: ''Монография \'' Турбо – Паскаль\''. '' Строки, записанные в программе подряд или через пробельные символы, при компиляции конкатенируются (склеиваются). Таким образом, в тексте программы последовательность из строк: ''Миру - '' ''мир! '' эквивалентна одной строке: ''Миру – мир! '' Длинную строковую константу можно размещать на нескольких строках в программе, используя еще и символ переноса строк - '\' В строке может быть один символ, например, ''A'', которая в отличие от символьной константы 'A' занимает в памяти 2 байта. Строковая константа может быть пустой '''', при этом ее длина равна 1 байту Символьная константа не может быть пустой, запись '' - не допустима. Кроме непосредственного использования строк в выражениях, строку можно поместить в символьный массив, например, при его инициализации и обращаться к ней по имени массива (раздел 2). Знаки операций Знаки операций – это один из элементов выражений. Выражения есть правило получения значения. Результат операции - это всегда значение. Знак операции — это один или более символов, определяющих действие над операндами. Внутри знака операции пробелы не допускаются. Операции делятся на унарные, бинарные, тернарные по количеству участвующих в них операндов. Один и тот же знак может интерпретироваться по-разному в зависимости от контекста. В табл. 1.5 представлены операции, приоритеты (ранги) и ассоциативность операций. Таблица 1.5 Операции языка С++ и их приоритеты
Кроме стандартных режимов использования операций язык С++ допускает расширение (перегрузку) их действия, дает возможность распространения действия на объекты классов. Примером такой перегрузки являются операции поразрядных сдвигов > > и < <. Когда слева от них в выражениях находятся входные и выходные потоки, они трактуются как операции извлечения данных из потока > > и вывода данных в поток < <. В табл. 1.6 дано краткое описание стандартных операций языка С++.
Таблица 1.6 Сводка стандартных операций С++
Операция и выражение присваивания Операция присваивания обозначается символом '='. Простейший вид операции присвоения: l = v Здесь l - выражение, которое может принимать значение, v - произвольное выражение. Операция присвоения выполняется справа налево, т.е. сначала вычисляется значение выражения v, а затем это значение присваивается левому операнду l. Левый операнд в операции присваивания должен быть так называемым адресным выражением, которое иначе называют lvalue. Примером адресного, или именующего выражения, является имя переменной. Адресным выражением никогда не являются константы. Не является lvalue и простое выражение, например, выражение a+b. Адресное выражение это объект, представляющий некоторый именованный участок памяти, в который можно поместить новое значение. В языке C++ операция присваивания образует выражение присваивания, т.е. a = b означает не только засылку в a значения b, но и то, что a = b является выражением, значением которого является левый операнд после присвоения. Отсюда следует, что возможна, например, такая запись: a = b = c = d = e + 2; Если тип правого операнда не совпадает с типом левого, то значение справа преобразуется к типу левого операнда (если это возможно). При этом может произойти потеря значения, например: int i; char ch; i=3.14; ch=777; Здесь i получает значение 3, а значение 777 слишком велико, чтобы быть представленным как char, поэтому значение ch будет зависеть от способа, которым конкретная реализация производит преобразование из большего в меньший целый тип. Существует так называемая комбинированная операция присваивания вида: a оп =b, здесь оп - знак одной из бинарных операций:
|