Особенности операции присваивания


1) В простейшем и часто используемом случае она похожа на присваивание языка Pascal. Только вместо двух символов (:=) используется один символ “=” и в общем виде выглядит следующим образом:

переменная=выражение;

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

2) Можно использовать так называемое многочисленное присваивание, когда значение одного и того же выражения присваивается нескольким переменным следующим образом:

Переменная1=Переменная2=…=ПеременнаяN=Выражение;

Например, оператор R=r=v=x+y; трём переменным присваивает одно и то же значение суммы двух чисел. Напомним, что R и r — это разные переменные.

3) Для более компактной записи присваивания разрешается использовать сокращённые операторы.

Например, MySum=MySum+Number1; можно кратко записать так: MySum += Number1; Такого вида сокращения можно использовать для арифметических и битовых бинарных операций (см. в 3.2 группу 14). В общем виде

переменная = переменная операция выражение;

где слева и справа от знака = одна и та же переменная, можно записать компактнее:

переменная операция= выражение;

Здесь идентификатор переменной записывается один раз, между операцией и символом “=” не должно быть пробела. В чём преимущество такой записи? Не надо дважды повторять имя одной и той же переменной.

Такая запись предпочтительнее, если используется длинный идентификатор для переменной. Поэтому в сокращённом операторе Y*=a+b особого смысла нет, можно для начинающих использовать обычную, более понятную форму: Y=Y*(a+b);

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

При самостоятельном использовании префиксная и постфиксная операции выполняются одинаково, то есть не важно, где стоит знак операции. Например, ++k; и k++; работают одинаково, и это равносильно более простой и понятной записи k=k+1; как принято в других языках. C помощью сокращённого присваивания это же можно записать и так: 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 не изменится. Во избежание риска в таком случае рекомендуется использовать скобки, то есть вторая запись нагляднее и надёжнее.

Замечание. Начинающие могут не использовать эти возможности, а программировать в стиле Pascal. Например, вместо Result= X*Y++; можно написать: Result= X*Y; Y=Y+1;

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

Запись R=(W=a)*b; равносильна двум операторам: W=a; R=W*b;



Дата добавления: 2016-07-18; просмотров: 1926;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.008 сек.