Операция присваивания

1) В простейшем случае она похожа на присваивание языка Pascal:

переменная = выражение;. Вместо двух символов (:=) используется один “=”. Слева всегда записывается только переменная. Справа как частный случай выражения допускается одна константа (x=1) или только обращение к функции (y=abs(x)), или одна переменная (y=x).

2) Можно использовать так называемое многочисленное присваивание: П1=П2=…=Пn=Выражение;. Значение одного и того же выражения присваивается нескольким переменным П1,П2, …, Пn. Например, оператор R=r=v=x+y; трём переменным R, r и v присваивает одно и то же значение суммы.

3) Сокращённое присваивание в общем виде выглядит так.

Переменная = переменная операция выражение;, где слева и справа от знака = одна и та же переменная, можно записать: переменная операция = выражение;. Например, S=S+N; можно сократить: S += N;. Идентификатор переменной записывается один раз, между операцией и символом “=” не должно быть пробела. Преимущество такой записи в том, что не надо дважды повторять имя одной и той же переменной.

4) Для увеличения или уменьшения на единицу можно использовать операции инкремент (++) и декремент( — -). Эти операции могут стоять как перед операндом (префиксная), так и после него (постфиксная). Нельзя писать пробел между этими одинаковыми символами. Их можно использовать как самостоятельно, так и в выражении.

При самостоятельном использовании префиксная и постфиксная операции выполняются одинаково. Например, ++k; и k++; равносильны более простой и понятной записи k=k+1; или k+=1; Аналогично, — — number; и number — -; равносильны number=number-1; или number-=1.

В выражениях префиксная и постфиксная операции различаются. В случае префиксной операции сначала изменяется значение переменной, перед которой стоит операция, а затем используется новое изменённое значение. Например, int X=2, Y=5, Resu Result= X*(++Y); или с учётом приоритета Result=X*++Y; выполняется так: сначала увеличивается значение Y изапоминается в этой же ячейке, то есть Y=Y+1, и при умножении используется новое значение Y, равное 6. В результате получим 2*6=12, то есть Result примет значение 12.

В случае постфиксной операции сначала используется старое значение переменной, после которой стоит операция, а затем оно изменяется. Например, пусть int X=2, Y=5, Resu Result= X*Y++; Сначала вычисляется произведение со старым значением Y, то есть Result примет значение 2*5=10, а затем значение Y увеличится и станет равным 6.

Пусть int X=2, Y=5, Resu Интерес представляет следующая запись: Result=X+++Y; Какая здесь операция — постфиксная для X или префиксная для Y? Это равносильно Result=(X++)+Y; то есть сначала выполняется сложение 2+5, а затем увеличивается X. В результате получим значение Result, равное 7, X примет значение 3, а Y не изменится. Во избежание риска в таком случае рекомендуется использовать скобки, то есть вторая запись надёжнее.

5) Ещё есть одна важная особенность присваивания, не обязательная для начинающих. Присваивание может быть частью другого оператора. Например, в компактной записи cout

Замечание. Наличие отмеченных выше особенностей присваивания, тернарной операции (4.2) и других профессиональных возможностей является одной из причин того, что язык С, в том числе и С++, традиционно считается сложнее языка Pascal. Но на начальном этапе изучения такого рода особенности не обязательно использовать. Можно программировать проще, в стиле языка Pascal. Например, вместо Result= X*Y++; можно написать проще: Result= X*Y; Y=Y+1;.

Перегрузка операторов пример. ООП. Перегрузка оператора присваивания. C++ Для начинающих. Урок#83


Читать еще…

Понравилась статья? Поделиться с друзьями: