Для сокращённой записи выражений в языке программирования С++ есть специальные операции, которые называются операциями присваивания. Рассмотрим фрагмент кода, с использованием операции присваивания.
int value = 256; value = value + 256; // обычное выражение с использованием двух операций: = и + value += 256; // сокращённое эквивалентное выражение с использованием операции присваивания
В строке 2 переменной value присваивается значение 512, полученное в результате суммы значения содержащегося в переменной value с числом 256. В строке 3 выражение выполняет аналогичную операцию, что и в строке 2, но выражение записано в упрощённом виде. В этом выражении присутствует операция присваивания со знаком плюс +=. Таким образом, операция += суммирует значение переменной value co значением, которое находится правее: 256, и присваивает результат суммы этой же переменной. Как видно из примера оператор в строке 3 короче оператора в строке 2, хоть и выполняет аналогичную операцию. Так что, если некоторую переменную нужно изменить, то рекомендуется использовать операции присваивания.
В С++ существует пять операций присваивания, не считая основную операцию присваивания: =.
+=операция присваивания-сложения;-=операция присваивания-вычитания;*=операция присваивания-умножения;/=операция присваивания-деления;%=операция присваивания-остатка от деления;
Договоримся называть операции присваивания через дефис, чтобы было понятно о какой именно операции идёт речь. В таблице 1 наглядно показаны примеры использования операторов присваивания в языке программирования С++.
| Операция | Обозначение | Пример | Экв.пример | Пояснение |
|---|---|---|---|---|
| операция присваивания-сложения | += | var += 16 | var = var + 16 | Прибавляем к значению переменной var число 16, результат суммирования сохраняется в переменной var |
| операция присваивания-вычитания | -= | var -= 16 | var = var — 16 | Вычитаем из переменной var число 16, результат вычитания сохраняется в переменной var |
| операция присваивания-умножения | *= | var *= 16 | var = var * 16 | Умножаем значение переменной var в 16 раз, результат умножения присваивается переменной var |
| операция присваивания-деления | /= | var /= 16 | var = var / 16 | Делим значение переменной var на 16, результат деления присваивается переменной var |
| операция присваивания-остатка от деления | %= | var %= 16 | var = var % 16 | Находим остаток от деления и сохраняем его в переменной var |
Разработаем программу, которая будет использовать операции присваивания.
// assignment.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
int value = 256;
cout << "value = " << value << endl;
value += 256; // сокращённое выражение с использованием операции присваивания - сложения
cout << "value += 256; >> " << value << endl;
value -= 256; // сокращённое выражение с использованием операции присваивания - вычитания
cout << "value -= 256; >> " << value << endl;
value *= 2; // сокращённое выражение с использованием операции присваивания - умножения
cout << "value *= 2; >> " << value << endl;
value /= 8; // сокращённое выражение с использованием операции присваивания - деления
cout << "value /= 8; >> " << value << endl;
system("pause");
return 0;
}
Для начала в строке 9 была объявлена переменная value, и инициализирована значением 256. В строках 11, 13, 15, 17, прописаны операции присваивания – сложения, вычитания, умножения и деления соответственно. После выполнения каждой операции присваивания оператор cout печатает результат. Результат работы программы (см. Рисунок 1).
value = 256 value += 256; >> 512 value -= 256; >> 256 value *= 2; >> 512 value /= 8; >> 64 Для продолжения нажмите любую клавишу . . .
Рисунок 1 – Операции присваивания в С++
На рисунке 1 наглядно показаны примеры выполнения операций присваивания, а также показан результат выполнения соответствующей операции присваивания.
Комментарии
хамза кондрошков
#include <iostream> using namespace std; int main() { int a ; int value = a; cout << "BEDITE 1 HCISLO" << endl; cin >> a; value += 1; cout << "value /= 9; >> " << value << endl; return 0; } я ввожу 9 и получаю -1 почему -1 помогитеhays_boy
а для чего нужно присвоение
PayL
Например, если ты не собираешься возвращаться к предыдущей переменной, и тебя интересует только конечный результат и дальнейшие операции с ним. При всём этом в твоей проге не нужно будет объявлять слишком много переменных, а всего одну как в рассмотренном примере.
Юльченок Юльченок
угу, по хорошему после каждого вывода надо переменной возвращать значение.
PayL
А по мне, статью переделывать не нужно, всё как надо написано.
Если-бы пришлось возвращать значение после каждой операции, то, я бы прочитав статью, не узнал бы что можно, не возвращая значения, дальше взаимодествовать с уже присвоенной новой переменной, что как раз отражает (на мой взгляд) смысл операции присвоения.
Но по вашему тоже можно, получилось бы более громоздко, и то, что описывалось выше, пришлось бы объяснять отдельно, что было бы лишне.
#include <iostream> using namespace std; int main() { int value, a1 = 256; value = a1; // присвоение переменной value значение 256 cout << "value = " << value << endl; value += 256; cout << "value += 256; >> " << value << endl; value = a1; // возврат value к значению 256 value -= 256; cout << "value -= 256; >> " << value << endl; value = a1; // возврат value к значению 256 value *= 2; cout << "value *= 2 >> " << value << endl; value = a1; // возврат value к значению 256 value /= 8; cout << "value /= 8 >> " << value << endl; cin.get(); return 0; }NaikoN
У Вас ошибка тут «
value -= 256;// сокращённое выражение с использованием операции присваивания - вычитанияcout <<"value -= 256; >> "<< value << endl;»
У Вас при выводе value=256, а должно равняться 0(нулю), т.к. запись value -= 256;можно расписать как value =value- 256; и получится 256-256=0. Исправьте пожалуйста.
NaikoN
Хоть нет, все правильно, т.к. value=512.