Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Data Structures and Algorithms in C++ 2e (На ру...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.37 Mб
Скачать

1.2. Выражения 17

результат назначается на переменную пункта floating. Оператор модуля n%m

приводит к остатку, который следовал бы из подразделения целого числа n/m.

Приращение и операторы декремента

Оператор постприращения возвращает стоимость переменной и затем увеличивает ее

1. Оператор постдекремента аналогичен, но уменьшает стоимость на 1. Оператор перед приращением сначала увеличивает переменные и затем возвращает стоимость.

вар ++ отправляет приращение

вар- отправляет декремент

++ вар пред приращение

- вар пред декремент

Следующий кодовый фрагмент иллюстрирует операторы декремента и приращение.

интервал [] =0, 1, 2, 3;

интервал i = 2;

интервал j = я ++; //j = 2 и теперь я = 3

интервал k =- я; //теперь я = 2 и k = 2

суд <<[k ++]; //[2] (= 2) произведен; теперь k = 3

Относительные и логические операторы

C ++ предоставляет обычным операторам сравнения.

exp <exp exp> exp exp <= exp exp> = exp exp == exp exp! = exp

менее, чем больше, чем меньше чем или равный больше, чем или равный равный, чтобы не равняться

Они возвращают Булев результат - или верный или ложный. Сравнения могут быть сделаны между числами, знаками, и последовательностями STL (но не последовательностями C-стиля). Указатели могут быть сравнены также, но это обычно только значащее, чтобы проверить, равны ли указатели или не равны (так как их ценности - адреса памяти).

Следующим логическим операторам также предоставляют.

! exp логичный не exp && exp логичный и

exp exp логичный или

Операторы && и оценивают последовательно слева направо. Если левые

операнд && ложный, весь результат ложный, и правильный операнд не оценка -

uated. оператор аналогичен, но остановки оценки, если левый операнд верен.

Это «срывание» довольно полезно в оценке цепи условного предложения экс-

pressions, где левое условие принимает меры против ошибки, совершенной правом

18

Глава 1. C ++ условие Учебника для начинающих. Например, следующий кодекс сначала проверяет это, Пассажирский указатель p непустой прежде, чем получить доступ к нему. Это привело бы к ошибке, если бы выполнение не было остановлено, если первое условие не удовлетворено.

если ((p! = ПУСТОЙ УКАЗАТЕЛЬ) && p-> isFreqFlyer)...

Логические операторы

Следующие операторы действуют на представления чисел как последовательности бита.

Они могут быть применены к любому типу целого числа, и результат - тип целого числа.

˜ exp дополнение bitwise exp & exp bitwise и exp ^ exp исключительный bitwise - или

exp exp bitwise или

exp1 <<exp2 переместите exp1, оставленный exp2 битами

exp1>> exp2 переместите exp1 право exp2 битами

Покинутый оператор изменения всегда заполняется нолями. То, как правильное изменение заполняется, зависит от типа переменной. В C ++ переменные целого числа - «подписанные» количества по умолчанию, но они могут быть объявлены как являющийся «неподписанным», как в «неподписанном интервале x.», Если левый операнд правильного изменения не подписан, изменение заполняется нолями, и иначе правильное изменение заполняется битом знака числа (0 для положительных чисел и 1 для отрицательных чисел). Обратите внимание на то, что вход (>>) и произвел (<<), операторы не находятся в этой группе. Они обсуждены позже.

Операторы назначения

В дополнение к знакомому оператору назначения (=), C ++ включает специальную форму для каждого из арифметических бинарных операторов (+,- *,/, %) и каждого бита -

мудрые бинарные операторы (&,, ^, <<>>,), который объединяет операцию над двоичными числами с

назначение. Например, заявление «n + = 2» означает «n = n + 2». Некоторые

примеры показывают ниже.

интервал я = 10; интервал j = 5;

натяните s = «да»;

i - = 4;

j * =-2;

s + = «или не»;

//я = я - 4 = 6//j = j * (-2) =-10//s = s + «или не» = «да или не»

Эти операторы назначения не только обеспечивают письменное удобство, но и они могут быть более эффективными, чтобы выполнить также. Например, в примере связи последовательности выше, новый текст может просто быть приложен к s без потребности произвести временную последовательность, чтобы держать промежуточный результат.