Операторы в C: исчерпывающее руководство
Операторы в C
В этом руководстве вы узнаете об операторах в программировании на C с помощью примеров.
Видео: Арифметические операторы в C
Оператор — это символ, выполняющий операцию над значением или переменной. Например: + — оператор сложения.
В C широкий набор операторов для выполнения различных операций.
Арифметические операторы в C
Арифметический оператор выполняет математические операции: сложение, вычитание, умножение, деление и т.д. над числовыми значениями (константами и переменными).
| Оператор | Значение |
|---|---|
| + | сложение или унарный плюс |
| - | вычитание или унарный минус |
| * | умножение |
| / | деление |
| % | остаток от деления (модуло) |
Пример 1: Арифметические операторы
// Работа арифметических операторов
#include <stdio.h>
int main() {
int a = 9, b = 4, c;
c = a + b; printf("a+b = %d \n", c);
c = a - b; printf("a-b = %d \n", c);
c = a * b; printf("a*b = %d \n", c);
c = a / b; printf("a/b = %d \n", c);
c = a % b; printf("Remainder when a divided by b = %d \n", c);
return 0;
}
Вывод
a+b = 13 a-b = 5 a*b = 36 a/b = 2 Remainder when a divided by b = 1
Операторы +, -, * работают как ожидается. При обычном расчёте 9/4 = 2.25, но программа выдаёт 2, так как оба операнда — целые, и компилятор отбрасывает дробную часть. Оператор % вычисляет остаток (здесь 1). % работает только с целыми.
Если a = 5.0, b = 2.0, c = 5, d = 2, то:
// Хотя бы один операнд — с плавающей точкой a/b = 2.5 a/d = 2.5 c/b = 2.5 // Оба операнда — целые c/d = 2
Операторы инкремента и декремента в C
В C есть операторы инкремента ++ и декремента -- для изменения значения операнда на 1.
++ увеличивает на 1, -- уменьшает на 1. Это унарные операторы (работают с одним операндом).
Пример 2: Инкремент и декремент
// Работа инкремента и декремента
#include <stdio.h>
int main() {
int a = 10, b = 100;
float c = 10.5, d = 100.5;
printf("++a = %d \n", ++a);
printf("--b = %d \n", --b);
printf("++c = %f \n", ++c);
printf("--d = %f \n", --d);
return 0;
}
Вывод
++a = 11 --b = 99 ++c = 11.500000 --d = 99.500000
Здесь операторы используются как префиксы. Они также могут быть постфиксами: a++, a--. Разница: префикс возвращает новое значение, постфикс — старое.
Операторы присваивания в C
Оператор присваивания используется для присваивания значения переменной. Самый частый — =.
| Оператор | Пример | То же, что |
|---|---|---|
| = | a = b | 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 |
Пример 3: Операторы присваивания
// Работа операторов присваивания
#include <stdio.h>
int main() {
int a = 5, c;
c = a; printf("c = %d\n", c); // 5
c += a; printf("c = %d\n", c); // 10
c -= a; printf("c = %d\n", c); // 5
c *= a; printf("c = %d\n", c); // 25
c /= a; printf("c = %d\n", c); // 5
c %= a; printf("c = %d\n", c); // 0
return 0;
}
Вывод
c = 5 c = 10 c = 5 c = 25 c = 5 c = 0
Операторы отношения в C
Оператор отношения проверяет отношение между двумя операндами. Если отношение истинно — возвращает 1, если ложно — 0. Используются в принятии решений и циклах.
| Оператор | Значение | Пример |
|---|---|---|
| == | Равно | 5 == 3 → 0 |
| > | Больше | 5 > 3 → 1 |
| < | Меньше | 5 < 3 → 0 |
| != | Не равно | 5 != 3 → 1 |
| >= | Больше или равно | 5 >= 3 → 1 |
| <= | Меньше или равно | 5 <= 3 → 0 |
Пример 4: Операторы отношения
// Работа операторов отношения
#include <stdio.h>
int main() {
int a = 5, b = 5, c = 10;
printf("%d == %d is %d \n", a, b, a == b);
printf("%d == %d is %d \n", a, c, a == c);
printf("%d > %d is %d \n", a, b, a > b);
printf("%d > %d is %d \n", a, c, a > c);
printf("%d < %d is %d \n", a, b, a < b);
printf("%d < %d is %d \n", a, c, a < c);
printf("%d != %d is %d \n", a, b, a != b);
printf("%d != %d is %d \n", a, c, a != c);
printf("%d >= %d is %d \n", a, b, a >= b);
printf("%d >= %d is %d \n", a, c, a >= c);
printf("%d <= %d is %d \n", a, b, a <= b);
printf("%d <= %d is %d \n", a, c, a <= c);
return 0;
}
Вывод
5 == 5 is 1 5 == 10 is 0 5 > 5 is 0 5 > 10 is 0 5 < 5 is 0 5 < 10 is 1 5 != 5 is 0 5 != 10 is 1 5 >= 5 is 1 5 >= 10 is 0 5 <= 5 is 1 5 <= 10 is 1
Логические операторы в C
Выражение с логическим оператором возвращает 0 или 1 в зависимости от истинности. Широко используются в принятии решений.
| Оператор | Значение | Пример |
|---|---|---|
| && | Логическое И. Истина, только если все операнды истинны | c=5, d=2: ((c==5) && (d>5)) = 0 |
| || | Логическое ИЛИ. Истина, если хотя бы один операнд истинен | c=5, d=2: ((c==5) || (d>5)) = 1 |
| ! | Логическое НЕ. Истина, только если операнд равен 0 | c=5: !(c==5) = 0 |
Пример 5: Логические операторы
// Работа логических операторов
#include <stdio.h>
int main() {
int a = 5, b = 5, c = 10, result;
result = (a == b) && (c > b);
printf("(a == b) && (c > b) is %d \n", result);
result = (a == b) && (c < b);
printf("(a == b) && (c < b) is %d \n", result);
result = (a == b) || (c < b);
printf("(a == b) || (c < b) is %d \n", result);
result = (a != b) || (c < b);
printf("(a != b) || (c < b) is %d \n", result);
result = !(a != b);
printf("!(a != b) is %d \n", result);
result = !(a == b);
printf("!(a == b) is %d \n", result);
return 0;
}
Вывод
(a == b) && (c > b) is 1 (a == b) && (c < b) is 0 (a == b) || (c < b) is 1 (a != b) || (c < b) is 0 !(a != b) is 1 !(a == b) is 0
Пояснение
(a == b) && (c > 5)= 1, так как оба операнда = 1 (истина).(a == b) && (c < b)= 0, так как(c < b)= 0 (ложь).(a == b) || (c < b)= 1, так как(a == b)= 1.(a != b) || (c < b)= 0, так как оба операнда = 0.!(a != b)= 1, так как(a != b)= 0.!(a == b)= 0, так как(a == b)= 1.
Побитовые операторы в C
Во время вычислений математические операции преобразуются к битровому уровню, что ускоряет обработку и экономит энергию. Побитовые операторы выполняют битровые операции.
| Оператор | Значение |
|---|---|
| & | Побитовое И |
| | | Побитовое ИЛИ |
| ^ | Побитовое исключающее ИЛИ (XOR) |
| ~ | Побитовое дополнение (НЕ) |
| << | Сдвиг влево |
| >> | Сдвиг вправо |
Подробнее: побитовые операторы в C.
Другие операторы
Оператор запятая
Связывает связанные выражения вместе. Например:
int a, c = 5, d;
Оператор sizeof
sizeof — унарный оператор, возвращающий размер данных (констант, переменных, массивов, структур и т.д.).
Пример 6: Оператор sizeof
#include <stdio.h>
int main() {
int a; float b; double c; char d;
printf("Size of int = %zu bytes\n", sizeof(a));
printf("Size of float = %zu bytes\n", sizeof(b));
printf("Size of double = %zu bytes\n", sizeof(c));
printf("Size of char = %zu byte\n", sizeof(d));
return 0;
}
Вывод
Size of int = 4 bytes Size of float = 4 bytes Size of double = 8 bytes Size of char = 1 byte
Другие операторы — тернарный ?:, оператор ссылки &, разыменования * и выбор члена -> — будут рассмотрены в следующих руководствах.
Язык C
- Основы программирования микропроцессоров
- Операторы C# — исчерпывающее руководство по операторам в C#
- Освоение побитовых и сдвиговых операторов в C#: полное руководство
- Освоение пространств имен в C#: организация, область видимости и лучшие практики
- Освоение операторов C++: полное руководство с практическими примерами
- Как передавать массивы в функции в C++: практическое руководство
- Четыре проверенных паттерна пользовательских функций в C
- Мастерство операторов Python: Полное руководство
- Освоение операторов Java: типы, синтаксис и практические примеры
- Освоение программирования на C: подробное руководство для начинающих