Читайте также: |
|
Оператор присваивания имеет вид:
Имя_переменной = выражение;
– значение выражения из правой части (rvalue) записывается в память по адресу, на который ссылается переменная в левой части (lvalue). При этом операция вырабатывает значение, равное значению, присвоенному переменной, находящейся в левой части операции. Это делает возможным использование операции присваивания в правой части выражений.
Слева от знака операции присваивания может быть только модифицируемое леводопустимое значение (в случае именованной типизированной константы, например, леводопустимое значение не является модифицируемым и ссылается на неизменный участок памяти).
int main()
{
int i=0; double x=0.;
x =(i = 5.25) + 6.5;
cout << i << " " << x << endl; // 5 11.5 (5+6.5)
int j=0; int ix=0;
ix=(j=5.25)+6.5;
cout << j << " " << ix << endl; // 5 11 (5+6.5)
_getch();
return 0;
}
Для более компактной записи присваивания разрешается использовать сокращенные операции присваивания ((составные присваивания: += -= *= /= %= >>= <<= &= ^= |=). В общем виде оператор присваивания:
переменная = переменная операция выражение;
можно записать компактнее: переменная операция= выражение; (между операцией и символом = не должно быть пробела. Такая запись позволяет не повторять дважды имя одной и той же переменной. Для сокращенных операций присваивания некоторые компиляторы генерируют код, выполняемый быстрее.
Можно использовать и множественное присваивание:
переменная1 = переменная2 = … = переменнаяN = выражение;
a=b=c=d=0; //можно использовать!!!!
Это равносильно записи:
a=(в=(с=(d=0)))
int main()
{
int i=0; float x=0, y=0; bool b=false;
x = b = i = y = 4.567;
cout << y << " " << i << " " << b << " " << x << endl;
// 4.567 4 1 1
_getch();
return 0;
}
Но!!!
int main()
{
float x=0, y=4.5, z=3.2;
x = ( y = z ) = 6.5; // z=3.2 y=6.5!!!!! x=6.5
cout << z << " " << y << " " << x << endl;
// 3.2 6.5!!!!! 6.5
_getch();
return 0;
}
операция | содержание | операция | содержание |
x=y; | k %=m; | k=k % m; | |
x +=y; | x=x + y; | k >>=m; | k=k >> m сдвиг вправо на m битов |
x -=y; | x=x - y; | k <<=m; | k=k << m сдвиг влево на m битов |
x *=y; | x=x * y; | k |=m; | k=k | m побитовая операция логического сложения |
x /=y; | x=x / y; | k ^=m; | k=k ^ m побитовая операция «исключающее или» |
Дата добавления: 2015-07-08; просмотров: 154 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Выделение цифр в целом числе | | | Примеры использования |