Операторы присваивания в C
Привет, будущие программисты! Сегодня мы погрузимся в увлекательный мир операторов присваивания в языке программирования C. Не волнуйтесь, если вы никогда не писали ни одной строчки кода – я здесь, чтобы вести вас по этому пути шаг за шагом. К концу этого урока вы будете присваивать значения, как профессионал!
Что такое операторы присваивания?
Перед тем как перепрыгнуть в воду, давайте разберемся, что такое операторы присваивания. Представьте их в виде знака равенства (=), который вы использовали в математике, но с суперсилами! Они используются для присваивания значений переменным в ваших программах. Но в 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