Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Konspekt_S.doc
Скачиваний:
23
Добавлен:
09.02.2015
Размер:
1.15 Mб
Скачать

Операции составного присваивания

Операции этой группы перечислены в следующей таблице:

Операция

Использование

Эквивалент

*=

a *= b

a = a * b

/=

a /= b

a = a / b

%=

a %= b

a = a % b

+=

a += b

a = a + b

-=

a -= b

a = a - b

<<=

a <<= b

a = a << b

>>=

a >>= b

a = a >> b

&=

a &= b

a = a & b

|=

a |= b

a = a | b

^=

a ^= b

a = a ^ b

Общий формат записи выражений с использованием этих операций:

< Переменная > < Операция >= < Выражение >

Эквивалентом этого формата в общем случае является:

< Переменная > = < Переменная > < Операция > < Выражение >

Таким образом, выражение с использованием составного присваивания (столбец "Использование") является укороченной формой записи соответствующего эквивалентного выражения (столбец "Эквивалент").

Условная операция

Единственная в C++ тернарная операция. Формат записи:

< Условие > ? < Выражение 1 > : < Выражение 2 >

| | |

Операнд 1 Операнд 2 Операнд 3

"Условие" - любое выражение, результатом которого является число или логическое значение. Значение "Условия" трактуется как логическое значение (0-false; любое не равное0значение -true). Если значение первого операндаtrue(не равное0), то значение этого условного выражения будет равно значению второго операнда (Выражение 1). Если же значение первого операндаfalse(0), то значение этого условного выражения будет равно значению третьего операнда (Выражение 2).

Например:

// Переменной maxприсваивается наибольшее изaиbзначение

int max = a > b ? a : b;

Условные выражения можно вкладывать друг в друга. Например:

// Переменной maxприсваивается наибольшее изa,bиcзначение

int max = a > b ? (a > c ? a : c) : (b > c ? b : c);

Часто условное выражение используется для вывода на экран одного из значений, в зависимости от некоторого условия. Например:

cout << (a > b ? a : b) << endl; // Выводится наибольшее изaиb

Операция sizeof

Операция sizeofпредназначена для определения объема памяти в байтах, требующегося для размещения некоторого объекта или типа данных. Имеет две формы:

sizeof < Выражение >

или

sizeof (< Тип данных >)

Например:

long a = 0;

double d;

cout << sizeof (double) << endl; // Выведено 8

cout << sizeof (5 / 3) << endl; // Выведено 4

cout << sizeof a << endl; // Выведено 4

cout << sizeof (a + 3.14f) << endl; // Выведено 4

cout << sizeof (d = a + 3.14f) << endl; // Выведено 8

Приоритеты рассмотренных операций

Результат вычисления выражений зависит от приоритета операций и от порядка выполнения операций с одинаковым приоритетом.

Для правильной записи выражений очень важно знать, в каком порядке выполняются операции внутри выражения. Например:

5 + 4 * 3 / 2 + 3

Если выполнить операции слева направо, то результат будет равен 16:

5 + 4 = 9

9 * 3 = 27

27 / 2 = 13

13 + 3 = 16

Но, поскольку, операции умножения и деления имеют одинаковый приоритет, и он выше, чем у операции сложения, на самом деле результат будет равен 14:

4 * 3 = 12

12 / 6 = 6

5 + 6 = 11

11 + 3 = 14

В арифметических и логических выражениях операции с одинаковым приоритетом выполняются слева направо. А вот выражения с операторами присваивания выполняются справа налево.

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

Операция

Действие

++

Постфиксный оператор инкремента

--

Постфиксный оператор декремента

++

Префиксный оператор инкремента

--

Префиксный оператор декремента

!

Логическое «НЕ»

-

Унарный минус

+

Унарный плюс

тип

Явное преобразование типа

sizeof

Получение размерности операнда в байтах

*

Умножение

/

Деление

%

Остаток (деление по модулю)

+

Сложение

-

Вычитание

<<

Сдвиг влево

>>

Сдвиг вправо

<

Меньше

<=

Меньше или равно

>

Больше

>=

Больше или равно

==

Равно

!=

Не равно

&

Побитовое «И»

^

Побитовое исключающее «ИЛИ»

|

Побитовое «ИЛИ»

&&

Логическое «И»

||

Логическое «ИЛИ»

? :

Условная операция

=, +=, -=, *=, /=, %=, <<=, >>=, &=, |=, ^=

Простое и составные присваивания

Изменить порядок выполнения операций внутри выражения можно с помощью круглых скобок. В любом случае, когда возникают сомнения в определении приоритета выполнения операций лучше использовать круглые скобки (на первых порах это особенно рекомендуется).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]