Без сомнения, операторы необходимы в программировании. Операторы — это символы, которые мы используем для определения конкретных действий. Здесь вы можете увидеть диаграмму со всеми операторами, используемыми в C.

Бинарные операторы

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

  • Оператор ‘=’ используется для присвоения значения переменной.
    Синтаксис:
variable = value;

Пример:

num = 10;

Примечание. Мы можем присвоить одно и то же значение нескольким переменным, поместив их одну за другой, используя мешающие символы «=».

Пример:

int num1, num2, age;
num1 = num2 = age = 43; //now all three variables are equal to 43

Примечание. Оператор «=» применяется слева направо, а не наоборот. Итак, строка 43=num1 НЕВЕРНА.

Примечание. Тип присваиваемого значения должен быть того же типа, что и переменная. Если это не так, будет применена правильная форма значения (для числовых данных). Например:

int num1;
float num2;
num1 = num2 = 44.76
//the value of num1 will be 44 and the value of num2 will be 44.76
  • Оператор «+=» используется для присвоения значения, равного другому, но также увеличенного на определенное значение. Этот оператор довольно часто используется в циклах. Важно отметить, что для использования этого оператора переменная уже должна иметь предустановленное значение во избежание ошибки.
    Синтаксис
data_type variable;
variable = value1;
variable += value2
//in the end, the value of the variable will be value1 + value2

Пример:

int num;
num = 8;
num += 5;
//the value of num will be equal to 8+5=13
  • Оператор «-=» является полной противоположностью «+=». Вместо увеличения значения переменной мы уменьшаем его на определенное значение.
    Синтаксис:
data_type variable;
variable = value1;
variable -= value2
//in the end, the value of the variable will be value1 - value2
  • Операторы «*=» и «%=» не являются исключением из приведенного выше принципа. Оператор «*=» увеличивает значение переменной на определенное значение, умноженное на определенное, в то время как, с другой стороны, оператор «%=» уменьшает значение переменной, разделив его на определенное значение.
    Синтаксис:
data_type variable;
variable = value1;
variable *= value2
//in the end, the value of the variable will be value1 * value2

data_type variable;
variable = value3;
variable %= value4
//in the end, the value of the variable will be value3 / value4

Арифметические операторы

  • Оператор «+» просто используется для сложения.
  • Для вычитания используется оператор «-».
  • Оператор «*» используется для умножения.
  • Оператор ‘/’ используется для деления (div).
  • Оператор «%» используется для остатка целочисленного деления (по модулю).

Примеры:

float num, value1, value2;
value1 = 68343.453
printf("Enter a number:");
scanf("%f", value2);
num = value1 + value2;
//now the value of num will be equal to 68343.453 + value2
float num, value1, value2;
value1 = 68343.453
printf("Enter a number:");
scanf("%f", value2);
num = value1 - value2;
//now the value of num will be equal to 68343.453 - value2
float num, value1, value2;
value1 = 68343.453
printf("Enter a number:");
scanf("%f", value2);
num = value1 * value2;
//now the value of num will be equal to 68343.453 * value2
float num, value1, value2;
value1 = 68343.453
printf("Enter a number:");
scanf("%f", value2); //the value2 must be unequal to 0
num = value1 / value2;
//now the value of num will be equal to 68343.453 div value2
int num, value1, value2; //we only use '%' on integers
value1 = 6834
printf("Enter a number:");
scanf("%d", value2); //the value2 must be unequal to 0
num = value1 % value2;
//now the value of num will be equal to 6834 mod value2

Реляционные операторы

  • Оператор «==» используется в условиях, чтобы проверить, равно ли значение другому. В программировании это очень распространенная и трудно находимая логическая ошибка, поскольку ее обычно путают с «=». Компилятор не считает это ошибкой, так как предполагает, что мы пытаемся присвоить значение переменной другой переменной.
    Синтаксис:
if (value1 == vlaue2)
//if value1 is equal to value2 then the statement is True(1) otherwise it is False(0)
  • Операторы «‹» и «›» используются для определения того, является ли значение больше или меньше другого. Одно можно использовать вместо другого, просто поменяв местами значения, которые нам нужно проверить.
    Синтаксис:
if(value1 > value2)
//if value1 is greater than value2 then the statement is True(1) otherwise it is False(0)
if(value1 < value2)
//if value1 is smaller than value2 then the statement is True(1) otherwise it is False(0)

Примечание. значение1›значение2 и значение2›значение1 — это в точности противоположные условия, но выраженные одним и тем же оператором.

  • «›=» и «‹=» используются для определения того, является ли значение равным или большим, чем другое, равным или меньшим, чем другое. Синтаксис точно такой же, как у операторов, которые мы только что объяснили выше, и здесь также применимо то же самое о смене позиции значений.
  • Оператор ‘!=’ используется для проверки того, не равно ли значение другому. В большинстве языков программирования (включая C) используется синтаксис ‘!=’, но в других вы также можете увидеть его как ‘‹›’.
    Синтаксис:
if(value1 != value2)
//if value1 is NOT equal to value2 then the statement is True(1) otherwise it is False(0)

Логические операторы

  • Оператор «&&» представляет собой логическое отношение И между двумя операторами. Чтобы сложный оператор был True(1) при использовании оператора ‘&&’, оба оператора должны быть True(1). Если хотя бы одно из них неверно, результатом будет False(0).

False && False == False
False && True == False
True && True == True

Синтаксис:

if (statement1 && statement2)
//the condition above is True if both stetements are True at the same time

Пример:

int value1, value2;
value1 = 10;
value2 = 34;
if (value1 > 0 && value2 > 0)
  printf("Both numbers are positive!");
//the message will be displayed because both statements are true

Выход:

Both numbers are positive!
  • Оператор «||» представляет логическое отношение ИЛИ между двумя операторами. Для того, чтобы сложный оператор был True(1) при использовании оператора «||», хотя бы один из операторов должен быть True(1). Единственный шанс, что условие является ложным (0), - это когда оба утверждения являются ложными (0).

Ложь || Ложь == Ложь
Ложь || Истина == Истина
Истина || Истина == Истина

Синтаксис:

if (statement1 || statement2)
//the condition above is False if both stetements are False at the same time

Пример:

int value1, value2;
value1 = 10;
value2 = 34;
if (value1 < 0 || value2 > 10)
  printf("The statement is True!");
//the message will be displayed because one of the statements is true

Выход:

The statement is True!
  • Оператор ‘!’ представляет собой логическое отношение НЕ. Это означает, что при использовании оператора «!» мы получаем прямо противоположное логическое значение оператора. Например, если значение было True(1), при применении оператора «!» значение становится False(0) и наоборот.

!False == True
!True == False

Синтаксис:

!statement

Пример:

int value1, value2;
value1 = 10;
value2 = 34;
if (!(value1 < 0 || value2 > 10) == 1)
  printf("The statement is True!");
//the message will not be displayed because the original statement is True
//but it becomes False(0) after the application of the ! operator.

Побитовые операторы
Побитовые операторы используются для обработки битов целочисленных переменных/констант. Чтобы быть более конкретным, побитовые операторы берут каждый бит целого числа и выполняют желаемое логическое действие между ними и битами другого целого числа. Операторы следующие:

  • [И -> & ] Присваивает значение 1, только если оба бита равны единице, в противном случае присваивается значение 0.
    Пример:

137 и 182

10001001 и 10110110

1 0 0 0 1 0 0 1
&&&&&&&&&
1 0 1 1 0 1 1 0
— — — — — — —
1 0 0 0 0 0 0 0

  • [ИЛИ -› | ] Присваивает значение 0, только если оба бита равны 0, в противном случае присваивается значение 1.
    Пример:

240 | 404
11110000 | 110010100
011110000
| | | | | | | |
110010100
— — — — — —
111110100

  • [NOT -› ~ ] Используется только для одного значения и присваивает противоположное значение бита.
    Пример:

~653
~1010001101
— — — — — — —
0101110010

  • [XOR -> ^ ] Выполняет действие исключающего или и присваивает значение 1, только если два бита противоположны, в противном случае присваивает значение 0.
    Пример:

112 ^ 164
1110000 ^ 10100100
0 1 1 1 0 0 0 0
^ ^ ^ ^ ^ ^ ^ ^
1 0 1 0 0 1 0 0
— — — — — — —
1 1 0 1 0 1 0 0

  • [LSHIFT -> ‹‹ ] Предположим, у нас есть два значения, значение k и значение n. Оператор ‹‹ сдвигает биты значения k на n позиций влево и заполняет нулями пространство, оставшееся в «конце» значения.
    Пример:

value = 140
shift_value = 3
new_value = value ‹‹ shift_value
— — — — — — — — — — —
140 = 1000110
10001100 ‹‹ 3
Первые 3 цифры сдвинуты (1000)
0110000 = 48
new_value = 48

Примечание. Сдвиг влево эквивалентен двоичному умножению.

  • [RSHIFT -› ›› ] То же, что и LSHIFT, RSHIFT делает то же самое с двумя значениями, но вместо перемещения битов влево, он перемещает биты вправо и заполняет нулями пространство, оставшееся «спереди». значения.
    Пример:

value = 78
shift_value = 2
new_value = value ›› shift_value
— — — — — — — — — — —
78 = 1001110
1001110 ‹‹ 2
Последние 2 цифры сдвигаются (10)
0010011 = 19
new_value = 19

Примечание. Сдвиг вправо эквивалентен двоичному делению.

Унарные операторы

  • Оператор «++» используется для увеличения уже существующего значения на единицу. Чаще всего используется в циклах. Мы можем применить этот оператор либо до, либо после переменной. Позиционирование играет важную роль в усилении ценности. Чтобы быть точным, когда оператор используется после переменной (++i), значение переменной сначала увеличивается, а затем используется в соответствующем условии. С другой стороны, когда оператор ставится после переменной (i++), то текущее значение переменной используется в соответствующем условии, а затем повышается на единицу.
    Синтаксис:
int a, b;
a++;
++b;

Пример:

int i;
for (i = 0; i < 10; i++);
  printf("This is a loop");
//this message will be displayed 10 times
  • Оператор «--» используется для уменьшения уже существующего значения на единицу. Этот оператор подчиняется тем же правилам, что и оператор «++».
    Синтаксис:
int a, b;
a--;
--b;

Пример:

int count = 10;
printf("%d", count); //the number that will be displayed will be 10
count--; //this is equivelant to count = count -1;
printf("%d", count); //the number that will be displayed will be 9

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

Как следует из названия, условный оператор похож на оператор if…else. Его использование заключается в том, чтобы занимать меньше места, когда требуется простое условие. Начинающим программистам не рекомендуется использовать эту форму выражения, но более продвинутые программисты находят ее простым и понятным способом обработки простых условий без лишнего кода.
Синтаксис относительно прост. Часть «?» обозначает оператор if, а «:» — оператор else. Давайте посмотрим, как его использовать.
Синтаксис:

variable = expression1?expression2:expression3

where...

varriable = (condition)?(value = value1):(value = value2)

is equal to...

if (condition){
  value = value1;
}
else{
  value = value2;
}

Пример:

int value, num, value2, value2;
printf("Enter a number neg or pos:");
scanf("%d", num); //we ask the user for a number positive or negative
value1 = 1;
value2 = -1;
value = (num > 0)?(value = value1):(value = value2);
/*if the number is positive then we assign to the value the number 1
otherwise we assign it the value -1*/

Похвальный отзыв

Оператор запятая ‘,’ — один из самых частых, но молчаливых операторов в каждом языке программирования. Он используется для разделения переменных или операторов. Мы видели, как этот оператор используется, когда мы хотим объявить несколько переменных одного типа. Также он используется для выполнения «сцепленных» команд. Единственная проблема с оператором запятой заключается в том, что он обычно усложняет код.

В следующем курсе мы обсудим структуры выбора.

Если вам понравилась эта статья, вы можете купить мне кофе, он же топливо для программистов!