Операторы в C

Опубликовано: 11 Января, 2023

Операторы — это основа любого языка программирования. Мы можем определить операторы как символы, которые помогают нам выполнять определенные математические и логические вычисления над операндами. Другими словами, мы можем сказать, что оператор оперирует операндами. Например, «+» — это оператор, используемый для сложения, как показано ниже:

c = a + b;

Здесь «+» — это оператор, известный как оператор сложения, а «a» и «b» — операнды. Оператор сложения указывает компилятору добавить оба операнда «a» и «b».

Функциональность языка программирования C неполна без использования операторов.

C имеет много встроенных операторов и может быть разделен на 6 типов:

  1. Арифметические операторы
  2. Реляционные операторы
  3. Логические операторы
  4. Побитовые операторы
  5. Операторы присваивания
  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

,

разделитель выражений

слева направо

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или если вы хотите поделиться дополнительной информацией по теме, обсуждаемой выше.

C