Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга_2013_1_часть+.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
813.57 Кб
Скачать

§ 3. Выражения

Выражение — это записанная по определённым правилам комбинация переменных, констант, обращений к функциям и операций. Любой из перечисленных элементов не является обязательным и может отсутствовать. Как частный случай выражение может содержать только один из первых трёх элементов, например, константу.

3.1. Константы

Константы в отличие от переменных не могут изменяться программой. Записываются они по следующим правилам. Вещественные константы можно записать в обычной форме, используя символ “.” (точка) для разделения целой и дробной частей (5.,-12.345, 0.00987) или в экспоненциальной форме (0.5e1, -0.12345е+2, 987е-5). Константы целого типа можно записать в десятичной (26) или шестнадцатеричной (0x1A) системе счисления. Символьные константы записываются в одинарных кавычках. Например, ‘А’— первая прописная буква алфавита, ‘*’ символ “звёздочка”, ‘5’ — символ 5, но не целое число 5, ‘\\’ — символ “обратный слэш”, ‘\”’ — двойная кавычка, ‘\’ ‘ одинарная кавычка, ‘\n’,‘\t’,’\r’ —управляющие символы переход на новую строку, горизонтальная табуляция (вывод с определённых позиций строки), возврат каретки (переход в начало строки). Строковые константы записываются в двойных кавычках (“Это строка”, “The first number”, “1234”). Как и в других языках программирования, грамматический контроль строк, как в текстовом редакторе word, не выполняется.

Константы можно определить одним из следующих способов:

  • Непосредственно записать в выражении;

  • с помощью ключевого слова const, например, const n=10; И тогда в выражениях вместо константы 10 указываем идентификатор n. Тогда если одна и та же константа в программе встречается несколько раз, то для её замены не надо искать каждое появление такой константы, а достаточно изменить её значение один раз при объявлении;

  • с помощью директивы #define, которую можно записать в любом месте программы, не обязательно в самом начале. Например, #define SIZE 10. В конце символ “;” (точка с запятой) не пишется. Директива заменяет каждое появление символов SIZE, образующих слово, на 10. Тогда операторы int SIZE2=5; cout<<(SIZE+SIZE2); выведут число 15. Идентификатор SIZE2 определяет не константу, а переменную с начальным значением, которое в дальнейшем можно изменить. В идентификаторе SIZE2 последовательность символов SIZE не меняется на 10 ни первый, ни второй раз, а замена выполняется только в cout для SIZE. В отличие от второго способа, в этом случае SIZE можно переопределить, т. е. в любом месте программы можно записать новую директиву для определения SIZE, например, #define SIZE 2.

3.2. Операции и их приоритет

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

1) ( ) — круглые скобки для изменения приоритета операций и записи параметров функций,

[ ] — квадратные скобки для индексации массивов,

> — операция доступа к элементу структуры или объекта, если объявлен указатель на них;

∙ — операция доступа к элементу структуры или объекта, если объявлена структура или объект, а не указатель на них ;

2) ! — логическая операция отрицание ,

+ — унарный (одиночный) плюс,

 — унарный (одиночный) минус,

++ — операция инкремент, или увеличение на единицу;

-- — операция декремент, или уменьшение на единицу;

& и * — операции для работы с указателями ,

sizeof — размер типа или переменной в байтах,

new, delete —операции для работы с динамической памятью ;

  1. арифметические операции * / — умножение и деление для целых и вещественных типов. Для получения целой части результата деления двух целых чисел специальной операции, как было в языке Pascal (операция div), нет. Например, int a=25, b=4; cout <<(a/b); выведет 6, а не 6.25. Если одну из переменных объявить как float: int a=25; float b=4.; cout <<(a/b); то будет выведено 6.25, так как при выполнении деления целая переменная a преобразуется в тип float и получится вещественный результат;

% — получение остатка при целочисленном делении. Последнюю операцию можно использовать только для целых чисел. Например, 25%3 даст в результате 1;

  1. арифметические бинарные операции + (сложение) и  (вычитание);

  2. битовые операции: << — битовый сдвиг влево, >> — битовый сдвиг вправо;

  3. операции сравнения (отношения): < (меньше), <= (меньше либо равно), > (больше), >= (больше либо равно);

  4. операции сравнения на равенство = = и неравенство != :

  5. &битовая операция И;

  6. ^ — битовая операция исключающее ИЛИ ;

  7. | — битовая операция ИЛИ;

  8. &&логическая операция И;

  9. || — логическая операция ИЛИ;

  10. ?: тернарная операция для замены оператора if в некоторых случаях;

  11. операции присваивания: = *= /= %= += -= &= ^= |= <<= >>= ;

  12. , — операция запятая;

Обращение к функции, если оно есть, всегда выполняется первым.

Для изменения приоритета операций используются круглые скобки, которые имеют наивысший приоритет. Рекомендуется их написать, если есть сомнения насчёт приоритета операций. Ошибки не будет, если они окажутся лишними.