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

Сокращенная запись операции присваивания



В языке Cи допускается две разновидности сокращений записи операции присваивания:

a) вместо записи:

v = v @ e;

где @ - арифметическая операция либо операция над битовым представлением операндов, рекомендуется использовать запись

v @ = e;

например, i = i + 2; «i + = 2;

б) вместо записи (автоувеличение):

x = x # 1;

где # - символ + либо -, обозначающий операцию инкремента либо декремента, x - целочисленная переменная, переменная-указатель), рекомендуется использовать запись

префиксная: ##x; постфиксная: x##;

Если операции инкремента или декремента в коде программы используются в чистом виде, то различий в постфиксной и префиксной формами нет. Если же эти операции используются в выражении, то при использовании префиксной формы (##x), сначала значение x изменится на 1, а затем будет использовано в выражении. В постфиксной форме (x##), значение сначала используется в выражении, а затем изменяется на 1. Операции над указателями рассмотрим позже.

Примеры использования сокращений (фрагменты программ):

1) int i,j,k;

float x,y;

...

x* = y; «x = x*y;

i+ = 2; «i = i+2;

x/ = y+15; «x = x/(y+15);

k--; «k = k-1;

--k; «k = k-1;

j = i++; «j = i; i = i+1;

j = ++i; «i = i+1; j = i;

2) int n,a,b,c,d;

n = 2; a = b = c = 0;

a = ++n; // n=3, a=3

a+ = 2; // a=5

b = n++; // b=3, n=4

b- = 2; // b=1

c = --n; // n=3, c=3

c* = 2; // c=6

d = n--; // d=3, n=2

d% = 2; // d=1

Рекомендации использования сокращений обоснованы возможностью оптимизации программы. Например, схема выражения вида v@=e соответствует схеме выполнения многих машинных команд типа "регистр-память", а использование ##х и x## наличием в Си специальных процессорных команд инкремента и декремента.





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



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