Операторы в C ++


C ++ предоставляет различные типы операторов. Эти операторы можно использовать с переменными и литералами для получения результата. Вы знаете некоторые основные арифметические операторы, такие как +, -, *, / а также %. Но есть много других операторов, предоставляемых языком программирования C ++. Все операторы можно разделить на следующие категории:

  • Арифметические операторы
  • Операторы отношения
  • Логические операторы
  • Побитовые операторы
  • Операторы присваивания
  • Другие операторы

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

Этот тип операторов обсуждается в статье. Типы переменных C ++. Основные арифметические операторы: +, -, *, /,%. В дополнение к этим операторам есть 2 оператора для увеличения и уменьшения значения переменной. Оператор инкремента ++ и оператор декремента -. Эти операторы могут использоваться как перед переменной (префикс), так и после переменной (постфикс). Например, вы можете изменить значения переменной следующим образом:

int a = 0;
++a; //now "a" is 1
cout << a << endl;
a++; //now "a" is 2 
cout << a << endl;
--a; //decrement a. it's 1 now 
cout << a << endl;
--a; //decrement a; it is 0 now 
cout << a;
cin.ignore();

Результат программы должен быть следующим
1
2
1
0

Код ниже объяснит вам, что предварительное приращение сначала увеличивает значение, а затем присваивает значение переменной. Приращение поста сначала присваивает значение, а затем увеличивает его.

  
a = ++b; // a==4, b==4
a = b++; // a==3, b==4

В приведенном ниже коде отображается значение переменных с использованием приращения до и после.
  
int main()
{
  	int i = 0;
	while(i < 10)
	{
		cout << i++; //post increment
	}
	cout << endl;
	i = 0;
	while(i<10)
	{
		cout << ++i; //pre increment
	}	
	return 0;
}

Ниже приведен результат работы вышеуказанной программы.

0123456789
12345678910

Операторы отношения

Эта категория операторов используется для сравнения различных значений. Результатом операции является логическое значение (истина или ложь). Операторы отношения используются в следующей форме Operand1 оператор Operand2, где операндами могут быть сравниваемые переменные или литералы. Вот список операторов отношения:

оператор
описание
 == Равно Возвращает истину, если операнды равны. В противном случае - ложь.
 != Не равно Возвращает истину, если операнды не равны. В противном случае - ложь.
 < Менее Возвращает истину, если операнд1 меньше операнда2. В противном случае - ложь.
 > Больше Возвращает истину, если операнд1 больше, чем операнд2. В противном случае - ложь.
 <= Меньше или равно Возвращает истину, если операнд1 меньше операнда2 или равен операнду 2. В противном случае - ложь.
 >= Больше или равно Возвращает истину, если операнд1 больше операнда2 или равен операнду 2. В противном случае - ложь.

Теперь мы можем попробовать эти операторы. Помните, что «cout» выводит 1 для истины и 0 для ложи:

int three = 3;
int five = 5;
cout << " 3 is equal to 5 = " << (three == five) << endl;
cout << " 3 is not equal to 5 = " << (three != five) << endl;
cout << " 3 is less than 5 = " << (three < five) << endl;
cout << " 3 is greater than 5 = " << (three > five) << endl;
cout << " 3 is not less than 5 = " << (three >= five) << endl;
cout << " 3 is not greater than 5 = " << (three <= five) << endl;

Вывод для приведенного выше кода:

3 равно 5 = 0
3 не равно 5 = 1
3 меньше 5 = 1
3 больше 5 = 0
3 не меньше 5 = 0
3 не больше 5 = 1

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

C ++ предоставляет 3 операции из логической алгебры:
и (конъюнкция) оператор &&
или (дизъюнкция) оператор ||
оператор не (отрицание) !

Результат логических операций для 2 переменных x и y представлен в следующих таблицах:

X

Y

X && Y

X || Y

ложный

ложный

ложный

ложный

правда

ложный

ложный

правда

ложный

правда

ложный

правда

правда

правда

правда

правда

X

!X

ложный

правда

правда

ложный

Вот пример использования логических операторов:

//initialize x with true
bool x = true;
//initialize y with false
bool y = false;
//now x is x AND y (false)
x = x&&y;

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

Поразрядные операторы аналогичны логическим операторам, но они выполняют те же логические операции с битами. Все данные в памяти представлены в двоичной форме. Итак, переменные в виде битов содержат только 0 или 1. Следующая таблица представляет результат операций для побитовых операторов:

XYX и YX | YX ^ Y
00000
01011
11110
10011

C ++ предоставляет возможность использовать следующие побитовые операторы:

Двоичный оператор И "&"

Результирующий бит устанавливается в 1 тогда и только тогда, когда обе переменные имеют 1 в соответствующем бите. Пример двоичного &:

10100110 & 00101010 = 00100010

Оператор двоичного ИЛИ "|"

Результирующий бит устанавливается в 1, если хотя бы одна из переменных имеет 1 в соответствующем бите. Пример двоичного |:

10100110 | 00101010 = 10101110

Двоичный оператор XOR «^»

Бит результата устанавливается в 1, если только одна из переменных имеет 1 в соответствующем бите. Пример двоичного xor:

10100110 ^ 00101010 =  10001100

Двоичный оператор НЕ «~»

Переворачивает биты переменной. Например:

~10100110 = 01011001

Оператор двоичного сдвига влево «<< N»

Сдвинет влево на N бит. Проще говоря, N битов слева будет удалено, а количество N нулей будет добавлено справа. Например:

10100110 << 3 = 00110000

Оператор двоичного сдвига вправо «>> N»

Сдвинет вправо на N бит. Проще говоря, N битов справа будет удалено, а количество N нулей будет добавлено слева. Например:

10100110 >> 2 = 00101001

Назначение операций

Оператор «=» - это оператор присваивания в C ++, который присваивает значение объектам слева. C ++ предоставляет возможность комбинировать оператор присваивания почти со всеми операциями, которые мы обсуждали выше, и формирует «Оператор составного присваивания». Например, мы можем добавить значение переменной, как показано ниже.

int k = 9;
//normal way of adding value
k = k + 7;
//you can add value in a more compact way by combining two operators
//Composite assignment will be
k += 7; // this is equal to k = k + 7

Составное присвоение можно представить в виде:
Expression1

составной-присваивающий-оператор
 Expression2

в котором составной-присваивающий-оператор может быть одним из следующих.

Пусть изначально X = 10 для следующих примеров.

Составное присвоение
оператор
Пример
Эквивалентно
Результат
 += Х + = 2 Х = Х + 2 12
 -= Х - = 2 Х = Х - 2 8
 *= Х * = 2 Х = Х * 2 20
 /= Х / = 2 Х = Х / 2 5
 %= X% = 2 Х = Х% 2 0
 << = X << = 2 Х = Х << 2 40
 >> = Х >> = 2 Х = Х >> 2 2
 &= X & = 2 X = X & 2 2
 ^= Х ^ = 2 Х = Х ^ 2 8
 |= Х | = 2 X = X | 2 10

Предлагается использовать оператор составного присваивания для более эффективного кода.

X +=10; // will be faster than X = X + 10
X = X + 10; // will be slower than X += 10

Другие операторы

Некоторые операторы не включены ни в одну из перечисленных выше категорий, но они полезны и могут использоваться в ваших программах:

Оператор sizeof

Оператор sizeof возвращает размер переменной или типа. Здесь «размер» означает, сколько байтов памяти используется переменной или типом.

cout << sizeof(int) << endl; // will print 4
cout << sizeof(x) << endl; // will print size of x

Оператор Coma («,»)

Кома «,» Оператор используется, когда нужно выполнить последовательность операций. Вы использовали его при инициализации списка переменных того же типа:

double a = 2.0,
       b = 4.3,
       c = 2;

Приоритет операторов в C ++

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

Например, a = 2 + 3 * 5; здесь a будет присвоено 17, а не 25, потому что оператор * имеет более высокий приоритет, чем +, поэтому сначала умножается 3 * 5, а затем 2 добавляется к результату умножения 3 * 5.

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

оператор
Категория
Ассоциативность
старшинство
 () [] ->. ++ - -постфиксСлева направо
Наивысший
 + -! ~ ++ - - (тип) * и размерОдинарныйСправа налево
 * /%МультипликативныйСлева направо
 + -ДобавкиСлева направо
 << >>ShiftСлева направо
 <<=>> =реляционныйСлева направо
 ==! =равенствоСлева направо
 &Побитовое ИСлева направо
 ^Побитовое исключающее ИЛИСлева направо
 |Побитовое ИЛИСлева направо
 &&Логическое ИСлева направо
 ||Логическое ИЛИСлева направо
 ?:УсловныйСправа налево
 = + = - = * = / =% = >> = << = & = ^ = | =НазначениеСправа налево
 ,ЗапятаяСлева направо
Низкие