Исходный оператор объединенный оператор
a = a + 5; a+=5;
a = a – 3; a-=3;
a = a * 4; a*=4;
a = a / 6; a/=6;
a = a % 2; a%=2;
a = a + b / c; a+=b/c;
a = a & 3; a&=3;
a = a | 2; a|=2;
a = a * b / c; a*=b/c;
a = a * (b + c); a*=b + c;
Эти операции, как и сама операция присваивания, имеют самый низкий приоритет и выполняются в выражениях последними справа налево, поэтому, например, замена
a = a / b *c; на a/=b * c;
будет неверна – получаются различные выражения.
В операторах присваивания могут использоваться операции инкремента++и декремента--. Знаки инкремента и декремента могут стоять в выражениях как перед переменной (префиксная запись), так и после нее (постфиксная запись). При этом выражения будут вычисляться по-разному:
при префиксной записи (знак перед переменной) сначала изменяется значение этой переменной, а затем выполняются другие операции, и последней – операция присваивания:
a = 4;
b = ++a; a=5, b=5
c = ++b/2; b=6, c=3
d = ++a/2; a=6, d=3
при постфиксной записи (знак после переменной) сначала вычисляется значение выражения со старыми значениями переменных, выполняется операция присваивания, после чего выполняются операции инкремента или декремента:
a = 4;
b = a++; b=4, a=5
c = b++/2; c=2, b=5
d = a++/2; d=2, a=6
В Си приветствуется присваивание начальных значений переменным при их описании – инициализация переменных:
int i=5;
float x=3.1415;
char c=’A’;
Инициализировать переменные можно и выражениями, операндами которых являются константы:
int k=117*16;
float x= 3.1415*2.0e-3;
Если значения переменных целого или вещественного типов явно не заданы при их описании, то они автоматически инициализируются нулями.
Примеры записи операторов присваивания:
1.
int a=1;
int b=2;
int c=3;
float x=2.0;
a+= ++a / b++ % (c-= ceil(sqrt(x))); a=2 b=3 c=1
b+= (a | c++) - ++a % (int) floor(sqrt(x)); a=3 b=6 c=2
c|= --b % a--; a=2 b=5 c=2
2.
int a=3;
int b=2;
int c=1;
c+= --a / b++ + a % b; a=2 b=3 c=2
b|= ++a / (c+= b++, b+= a % c); a=3 b=7 c=5
a%= --a - ++b; a=2 b=5 c=8
3.
int a=0;
int b=0;
int c=0;
c+= b++; a=0 b=1 c=0
b+= ++c % ('A' / '1' + 'A' % '1' % 5); a=0 b=2 c=1
a-= ++b - c++; a=-2 b=3 c=2
Дата добавления: 2015-10-19; просмотров: 826;