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

Последнее обновление: 09.01.2023

Отдельную группу операций в языке программирования Си составляют операции присваивания. Она производится над двумя операндами. Причем левый операнд может представлять только модифицируемое именованное выражение, например, переменную.

Существует базовая операция присваивания =, которая позволяет присвоить значение правого операнда левому операнду:

int x = 2 + 5

Выражение 2 + 5 представляет правый операнд, и его значение присваивается левому операнду.

Стоит отметить, что тип значения правого операнда не всегда может совпадать с типом левого операнда. В этом случае компилятор пытается преобразовать значение правого операнда к типу левого операнда.

Также можно выполнять множественное присваивание:

int a, b, c;	
a = b = c = 34 +7;

Здесь сначала вычисляется значение выражения c = 34 +7. Значение правого операнда - 34 +7 присваивается левому операнду с. То есть переменная c получает значение 41. Далее вычисляется выражение b = c: значение правого операнда c (41) присваивается левому операнду b. И в конце вычисляется выражение a = b: значение правого операнда b (41) присваивается левому операнду a.

Все остальные операции присваивания являются сочетанием простой операции присваивания с другими операциями:

  • +=: присваивание после сложения. Присваивает левому операнду сумму левого и правого операндов: A += B эквивалентно A = A + B

  • -=: присваивание после вычитания. Присваивает левому операнду разность левого и правого операндов: A -= B эквивалентно A = A - B

  • *=: присваивание после умножения. Присваивает левому операнду произведение левого и правого операндов: A *= B эквивалентно A = A * B

  • /=: присваивание после деления. Присваивает левому операнду частное левого и правого операндов: A /= B эквивалентно A = A / B

  • %=: присваивание после деления по модулю. Присваивает левому операнду остаток от целочисленного деления левого операнда на правый: A %= B эквивалентно A = A % B

  • <<=: присваивание после сдвига разрядов влево. Присваивает левому операнду результат сдвига его битового представления влево на определенное количество разрядов, равное значению правого операнда: A <<= B эквивалентно A = A << B

  • >>=: присваивание после сдвига разрядов вправо. Присваивает левому операнду результат сдвига его битового представления вправо на определенное количество разрядов, равное значению правого операнда: A >>= B эквивалентно A = A >> B

  • &=: присваивание после поразрядной конъюнкции. Присваивает левому операнду результат поразрядной конъюнкции его битового представления с битовым представлением правого операнда: A &= B эквивалентно A = A & B

  • |=: присваивание после поразрядной дизъюнкции. Присваивает левому операнду результат поразрядной дизъюнкции его битового представления с битовым представлением правого операнда: A |= B эквивалентно A = A | B

  • ^=: присваивание после операции исключающего ИЛИ. Присваивает левому операнду результат операции исключающего ИЛИ его битового представления с битовым представлением правого операнда: A ^= B эквивалентно A = A ^ B

Примеры операций:

int a = 5;
a += 10;		// 15
a -= 3;			// 12
a *= 2;			// 24
a /= 6;			// 4
a <<= 4;		// 64
a >>= 2;		// 16
Дополнительные материалы
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850