Операторы в C
Операторы — это основа любого языка программирования. Мы можем определить операторы как символы, которые помогают нам выполнять определенные математические и логические вычисления над операндами. Другими словами, мы можем сказать, что оператор оперирует операндами. Например, «+» — это оператор, используемый для сложения, как показано ниже:
c = a + b;
Здесь «+» — это оператор, известный как оператор сложения, а «a» и «b» — операнды. Оператор сложения указывает компилятору добавить оба операнда «a» и «b».
Функциональность языка программирования C неполна без использования операторов.
C имеет много встроенных операторов и может быть разделен на 6 типов:
- Арифметические операторы
- Реляционные операторы
- Логические операторы
- Побитовые операторы
- Операторы присваивания
- Другие операторы
Вышеупомянутые операторы были подробно обсуждены:
1. Арифметические операторы:
Эти операторы используются для выполнения арифметических/математических операций над операндами. Примеры: (+, -, *, /, %,++,–). Арифметические операторы бывают двух типов:
а) Унарные операторы :
Операторы, которые оперируют или работают с одним операндом, являются унарными операторами. Например: операторы увеличения (++) и уменьшения (–).
int val = 5; ++val; // 6
б) Бинарные операторы :
Операторы, которые оперируют или работают с двумя операндами, являются бинарными операторами. Например: операторы сложения (+), вычитания (-), умножения (*), деления (/).
int a = 7; int b = 2; cout<<a+b; // 9
2. Реляционные операторы:
Они используются для сравнения значений двух операндов. Например, проверка, равен ли один операнд другому операнду или нет, больше ли операнд, чем другой операнд или нет, и т. д. Некоторые из операторов отношения (==, >=, <=) (см. эту статью для дополнительной справки).
int a = 3; int b = 5; a < b; // operator to check if a is smaller than b
3. Логические операторы:
Логические операторы используются для объединения двух или более условий/ограничений или для дополнения оценки исходного рассматриваемого условия. Результатом действия логического оператора является логическое значение true или false .
Например, логическое И, представленное как оператор '&&' в C, возвращает истину, когда выполняются оба рассматриваемых условия. В противном случае возвращается ложь. Следовательно, a && b возвращает значение true, когда оба значения a и b истинны (т. е. не равны нулю) (дополнительную информацию см. в этой статье).
(4 != 5) && (4 < 5); // true
4. Побитовые операторы:
Побитовые операторы используются для выполнения битовых операций над операндами. Операторы сначала преобразуются в битовый уровень, а затем выполняется вычисление операндов. Математические операции, такие как сложение, вычитание, умножение и т. д., могут выполняться на битовом уровне для более быстрой обработки. Например, побитовый оператор И , представленный как '&' в C, принимает два числа в качестве операндов и выполняет И с каждым битом двух чисел. Результат И равен 1, только если оба бита равны 1 (Истина).
int a = 5, b = 9; // a = 5(00000101), b = 9(00001001) cout << (a ^ b); // 00001100 cout <<(~a); // 11111010
5. Операторы присваивания:
Операторы присваивания используются для присвоения значения переменной. Левый операнд оператора присваивания — это переменная, а правый операнд оператора присваивания — это значение. Значение в правой части должно иметь тот же тип данных, что и переменная в левой части, иначе компилятор выдаст ошибку.
Ниже показаны различные типы операторов присваивания:
а) «=»
Это простейший оператор присваивания. Этот оператор используется для присвоения значения справа переменной слева.
Пример:
a = 10; b = 20; ch = "y";
б) «+=»
Этот оператор представляет собой комбинацию операторов «+» и «=». Этот оператор сначала добавляет текущее значение переменной слева к значению справа, а затем присваивает результат переменной слева.
Пример:
(a += b) can be written as (a = a + b) If initially value stored in a is 5. Then (a += 6) = 11.
в) «-=»
Этот оператор представляет собой комбинацию операторов «-» и «=». Этот оператор сначала вычитает значение справа от текущего значения переменной слева, а затем присваивает результат переменной слева.
Пример:
(a -= b) can be written as (a = a - b) If initially value stored in a is 8. Then (a -= 6) = 2.
г) «*=»
Этот оператор представляет собой комбинацию операторов «*» и «=». Этот оператор сначала умножает текущее значение переменной слева на значение справа, а затем присваивает результат переменной слева.
Пример:
(a *= b) can be written as (a = a * b) If initially, the value stored in a is 5. Then (a *= 6) = 30.
д) «/=»
Этот оператор представляет собой комбинацию операторов «/» и «=». Этот оператор сначала делит текущее значение переменной слева на значение справа, а затем присваивает результат переменной слева.
Пример:
(a /= b) can be written as (a = a / b) If initially, the value stored in a is 6. Then (a /= 2) = 3.
6. Другие операторы :
Помимо вышеперечисленных операторов, в C есть несколько других операторов, используемых для выполнения определенных задач. Некоторые из них обсуждаются здесь:
а. оператор sizeof
- sizeof часто используется в языке программирования C.
- Это унарный оператор времени компиляции, который можно использовать для вычисления размера его операнда.
- Результат sizeof имеет целочисленный тип без знака, который обычно обозначается как size_t.
- По сути, оператор sizeof используется для вычисления размера переменной. (См. эту статью для справки)
б. Оператор запятой
- Оператор запятой (представленный токеном) — это бинарный оператор, который оценивает свой первый операнд и отбрасывает результат, затем он оценивает второй операнд и возвращает это значение (и тип).
- Оператор запятой имеет самый низкий приоритет среди всех операторов C.
- Запятая действует как оператор и разделитель. (См. эту статью для справки)
в. Условный оператор
- Условный оператор имеет форму Expression1? Выражение2: Выражение3
- Здесь Expression1 — это оцениваемое условие. Если условие (Выражение1) истинно , мы выполним и вернем результат Выражения2, в противном случае, если условие (Выражение1) ложно , мы выполним и вернем результат Выражения3.
- Мы можем заменить использование операторов if..else условными операторами. (См. эту статью для справки)
д. Точка (.) и стрелка (->) Операторы
- Операторы-члены используются для ссылки на отдельные члены классов, структур и объединений.
- Оператор точки применяется к фактическому объекту. (См. эту статью для справки)
- Оператор стрелки используется с указателем на объект. (См. эту статью для справки)
е. Актерский оператор
- Операторы приведения преобразуют один тип данных в другой. Например, int(2.2000) вернет 2.
- Приведение — это специальный оператор, который принудительно преобразует один тип данных в другой.
- Наиболее общее приведение типов, поддерживаемое большинством компиляторов C, выглядит следующим образом: [(type) expression] . (См. эту статью для справки)
ф. &,* Оператор
- Оператор указателя & возвращает адрес переменной. Например &а; даст фактический адрес переменной.
- Оператор указателя * — это указатель на переменную. Например *вар; будет указывать на переменную var. (См. эту статью для справки
Ниже приведена реализация вышеупомянутых операторов:
Таблица приоритетов операторов
В приведенной ниже таблице описывается порядок приоритета и ассоциативность операторов в C. Приоритет оператора уменьшается сверху вниз.
Приоритет | Оператор | Описание | Ассоциативность |
---|---|---|---|
1 | () | Скобки (вызов функции) | слева направо |
[] | Скобки (индекс массива) | слева направо | |
. | Выбор элемента по имени объекта | слева направо | |
-> | Выбор элемента с помощью указателя | слева направо | |
а++/а– | Инкремент/декремент постфикса (a - переменная) | слева направо | |
2 | ++а/-а | Увеличение/уменьшение префикса (a — переменная) | справа налево |
+/- | Унарный плюс/минус | справа налево | |
!~ | Логическое отрицание/побитовое дополнение | справа налево | |
(тип) | Cast (преобразование значения во временное значение типа) | справа налево | |
* | Разыменование | справа налево | |
& | Адрес (операнда) | справа налево | |
размер | Определить размер в байтах в этой реализации | справа налево | |
3 | *,/,% | Умножение/деление/модуль | слева направо |
4 | +/- | Сложение/вычитание | слева направо |
5 | << , >> | Побитовый сдвиг влево, Побитовый сдвиг вправо | слева направо |
6 | < , <= | Относительное меньше/меньше или равно | слева направо |
> , >= | Относительное больше/больше или равно | слева направо | |
7 | == , != | Реляционное равно/не равно | слева направо |
8 | & | Побитовое И | слева направо |
9 | ^ | Побитовое исключающее ИЛИ | слева направо |
10 | | | Побитовое включительно ИЛИ | слева направо |
11 | && | Логическое И | слева направо |
12 | || | Логическое ИЛИ | слева направо |
13 | ?: | Тернарное условное | справа налево |
14 | знак равно | Назначение | справа налево |
+= , -= | Назначение сложения/вычитания | справа налево | |
*= , /= | Назначение умножения/деления | справа налево | |
%= , &= | Модуль/побитовое И присваивание | справа налево | |
^= , |= | Побитовое исключающее/включающее ИЛИ назначение | справа налево | |
<>= | Побитовый сдвиг влево/вправо | справа налево | |
15 | , | разделитель выражений | слева направо |
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или если вы хотите поделиться дополнительной информацией по теме, обсуждаемой выше.