Операторы присваивания в C

Привет, будущие программисты! Сегодня мы погрузимся в увлекательный мир операторов присваивания в языке программирования C. Не волнуйтесь, если вы никогда не писали ни одной строчки кода – я здесь, чтобы вести вас по этому пути шаг за шагом. К концу этого урока вы будете присваивать значения, как профессионал!

C - Assignment Operators

Что такое операторы присваивания?

Перед тем как перепрыгнуть в воду, давайте разберемся, что такое операторы присваивания. Представьте их в виде знака равенства (=), который вы использовали в математике, но с суперсилами! Они используются для присваивания значений переменным в ваших программах. Но в C они могут делать гораздо больше, чем просто присваивать значения.

Простой оператор присваивания (=)

Начнем с основ – с простого оператора присваивания. Это основа всех операций присваивания в C.

Как это работает

Простой оператор присваивания представляет собой знак равенства (=). Он берет значение с правой стороны и присваивает его переменной с левой стороны.

Вот простой пример:

int age;
age = 25;

В этом коде мы объявляем целочисленную переменную age и затем присваиваем ей значение 25. Просто так!

Множественные присваивания

Вы также можете связать присваивания вместе. Рассмотрим пример:

int x, y, z;
x = y = z = 10;

Этот код присваивает значение 10 всем трем переменным: x, y и z. Работает справа налево, так что сначала z получает 10, затем y получает значение z (то есть 10), и, наконец, x получает значение y (то есть также 10).

Инициализация переменных

Вы также можете использовать оператор присваивания при объявлении переменных:

int height = 180; // Объявление и инициализация в одной строке
float pi = 3.14159;
char grade = 'A';

Это отличный способ установить начальные значения для ваших переменных сразу при их создании.

Усиленные операторы присваивания

Теперь поднимемся на уровень выше! Усиленные операторы присваивания – это как ярлыки. Они выполняют операцию и присваивание в один шаг. Рассмотрим их по порядку:

Добавление с присваиванием (+=)

Оператор += добавляет правый операнд к левому операнду и присваивает результат левому операнду.

int score = 10;
score += 5; // Эквивалентно: score = score + 5;
printf("Score: %d\n", score); // Вывод: Score: 15

Вычитание с присваиванием (-=)

Оператор -= вычитает правый операнд из левого операнда и присваивает результат левому операнду.

int lives = 3;
lives -= 1; // Эквивалентно: lives = lives - 1;
printf("Lives remaining: %d\n", lives); // Вывод: Lives remaining: 2

Умножение с присваиванием (*=)

Оператор *= умножает левый операнд на правый операнд и присваивает результат левому операнду.

int power = 2;
power *= 3; // Эквивалентно: power = power * 3;
printf("Power level: %d\n", power); // Вывод: Power level: 6

Деление с присваиванием (/=)

Оператор /= делит левый операнд на правый операнд и присваивает результат левому операнду.

float money = 100.0;
money /= 2; // Эквивалентно: money = money / 2;
printf("Money left: %.2f\n", money); // Вывод: Money left: 50.00

Остаток от деления с присваиванием (%=)

Оператор %= вычисляет остаток от деления левого операнда на правый операнд и присваивает результат левому операнду.

int cookies = 10;
cookies %= 3; // Эквивалентно: cookies = cookies % 3;
printf("Leftover cookies: %d\n", cookies); // Вывод: Leftover cookies: 1

Побитовое И с присваиванием (&=)

Оператор &= выполняет побитовое И и присваивает результат левому операнду.

int a = 5; // Двоичный: 0101
a &= 3;    // Двоичный: 0011
printf("Result: %d\n", a); // Вывод: Result: 1

Побитовое ИЛИ с присваиванием (|=)

Оператор |= выполняет побитовое ИЛИ и присваивает результат левому операнду.

int b = 5; // Двоичный: 0101
b |= 3;    // Двоичный: 0011
printf("Result: %d\n", b); // Вывод: Result: 7

Побитовое Исключающее ИЛИ с присваиванием (^=)

Оператор ^= выполняет побитовое исключающее ИЛИ и присваивает результат левому операнду.

int c = 5; // Двоичный: 0101
c ^= 3;    // Двоичный: 0011
printf("Result: %d\n", c); // Вывод: Result: 6

Правый сдвиг с присваиванием (<<=)

Оператор <<= выполняет правый сдвиг и присваивает результат левому операнду.

int d = 5; // Двоичный: 0101
d <<= 1;   // Сдвиг влево на 1
printf("Result: %d\n", d); // Вывод: Result: 10

Левый сдвиг с присваиванием (>>=)

Оператор >>= выполняет левый сдвиг и присваивает результат левому операнду.

int e = 8; // Двоичный: 1000
e >>= 1;   // Сдвиг вправо на 1
printf("Result: %d\n", e); // Вывод: Result: 4

Таблица резюме операторов присваивания

Вот удобная таблица, подводящая итоги всех операторов присваивания, которые мы рассмотрели:

Оператор Описание Пример Эквивалентно
= Простое присваивание x = 5; x = 5;
+= Добавление с присваиванием x += 3; x = x + 3;
-= Вычитание с присваиванием x -= 3; x = x - 3;
*= Умножение с присваиванием x *= 3; x = x * 3;
/= Деление с присваиванием x /= 3; x = x / 3;
%= Остаток от деления с присваиванием x %= 3; x = x % 3;
&= Побитовое И с присваиванием x &= 3; x = x & 3;
|= Побитовое ИЛИ с присваиванием x |= 3; x = x | 3;
^= Побитовое Исключающее ИЛИ с присваиванием x ^= 3; x = x ^ 3;
<<= Правый сдвиг с присваиванием x <<= 2; x = x << 2;
>>= Левый сдвиг с присваиванием x >>= 2; x = x >> 2;

И это всё! Вы только что совершили большое путешествие по операторам присваивания в C. Помните, практика – это основа. Попробуйте написать немного кода с использованием этих операторов, и вскоре вы обнаружите, что используете их без усилий.

Счастливого кодирования, будущие программисты на C!

Credits: Image by storyset