Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



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, Result; Result= X*(++Y); или с учётом приоритета Result=X*++Y; выполняется так: сначала увеличивается значение Y изапоминается в этой же ячейке, то есть Y=Y+1, и при умножении используется новое значение Y, равное 6. В результате получим 2*6=12, то есть Result примет значение 12.

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

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

5) Ещё есть одна важная особенность присваивания, не обязательная для начинающих. Присваивание может быть частью другого оператора. Например, в компактной записи cout<<(R=a*10)<<endl; не надо дважды записывать один и тот же идентификатор R. Это равносильно R=a*10; cout<<R<<endl; Запись R=(W=a)*b; равносильна двум выражениям (операторам): W=a; R=W*b;

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





Дата публикования: 2015-02-18; Прочитано: 403 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...