Сокращенная запись операции присваивания
В языке 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-11; просмотров: 899;