Читайте также:
|
|
(i) Инкремент и декремент: ++ и --. (унарная)
Эти операции в общем случае применяются к операндам, которые есть l-value.
Не используйте ++ и/или – с одной и той же переменной более одного раза; не рекомендуется применять эти операции в простых выражениях, где присутствуют переменные с ++/ -- и переменные без ++/--. ++++i увеличивает i на 2, i++++ - ошибка. Операции ++ и – имеют две версии: префиксная (prefix) операция и постфиксная (postfix) операция. Обе версии увеличивают/уменьшают значение операнда на 1, но префиксная версия представляет результирующее значение после увеличения/уменьшения, а постфиксная - перед увеличением/уменьшением:
int x = 1, y = 2;
int z = (x++) + (++y); // то же, что и x++ + ++y см.приоритеты!
cout << x << " " << y << " " << z << endl;
Выводится: 2 3 4.
(ii) Условная операция?: (тернарная)
Выражение x? y: z имеет значение y, если x есть истина (true), или z, если x - ложь (false). Избегайте использования этой операции, если она затрудняет чтение исходного кода.
(iii) Операция взятия по индексу (индексирование) [ ] (бинарная)
Эта операция возвращает элемент массива, который может использоваться как l-value.
Например:
int I=0, y, x[10];
y=x[i]; // x – первый операнд, i – второй
(iv) Операция обращения к (вызова) функции () (бинарная)
Эта операция возвращает значение функции. Она возвращает “значение”, которое является l-value, если функция возвращает ссылку, или r-value – других случаях.
//Пример 2-4:
// возвращение значения по ссылке
#include <iostream>
using namespace std; // директива using
int x; // глобальная переменная
int& setx(); // прототип функции
int main()
{ // присваивание значения x при
setx() = 13; // помощи вызова функции слева: setx() – l-value
cout << "x=" << x << endl; // вывод нового значения x
return 0;
}
//--------------------------------------------------------
int& setx()
{
return x; // возвращает значение, которое будет изменено
}
(v) Операторы присваивания =, +=, -=, и т,д,
Операция = возвращает левый операнд после пересылки в него значения правого операнда (т.е. после операции значения обоих операндов идентичны).
Операции +=, -=, *=, /=, %= есть комбинация присвоения и соответствующей арифметической операции. Например, выражение x += y эквивалентно x = x + y. Версия операции += быстрее, чем при раздельном использовании.
(vi) Операции ввода/вывода << (операция вставки - вывод) и >> (операция извлечения из потока - ввод)
Эти операции – операции обмена между объектами cout и cin стандартного потока ввода/вывода (iostream -отдельная тема) и объектами (выражениями) базового типа (правый “операнд”). Знаки ‘<<’ и ‘>>’ “указывают” направление обмена. Допускается “каскадирование” операций. Например, выражение " cout << x << y; " эквивалентно " cout << x; cout << y; ".
Дата добавления: 2015-11-16; просмотров: 35 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Еще о классе памяти | | | Еще о выражениях |