С - Операторы
Оператор — это символ, который указывает компилятору выполнять определенные математические или логические функции. Язык C богат встроенными операторами и предоставляет следующие типы операторов —
- Арифметические операторы
- Операторы отношения
- Логические операторы
- Побитовые операторы
- Операторы присваивания
- Разные операторы
В этой главе мы рассмотрим, как работает каждый оператор.
Арифметические операторы
В следующей таблице показаны все арифметические операторы, поддерживаемые языком C. Предположим, переменная A содержит 10 и переменную B содержит 20, то −
Показать примеры
Оператор | Описание | Пример |
---|---|---|
+ | Добавляет два операнда. | A + В =30 |
– | Вычитает второй операнд из первого. | A − B =-10 |
* | Умножает оба операнда. | A * B =200 |
/ | Делит числитель на знаменатель. | В/А =2 |
% | Оператор модуля и остаток после целочисленного деления. | B % A =0 |
++ | Оператор приращения увеличивает целочисленное значение на единицу. | А++ =11 |
-- | Операция декремента уменьшает целочисленное значение на единицу. | A-- =9 |
Операторы отношения
В следующей таблице показаны все реляционные операторы, поддерживаемые C. Предположим, что переменная A содержит 10 и переменную B содержит 20, то −
Показать примеры
Оператор | Описание | Пример |
---|---|---|
== | Проверяет, равны ли значения двух операндов. Если да, то условие становится истинным. | (A ==B) неверно. |
!= | Проверяет, равны ли значения двух операндов. Если значения не равны, то условие становится истинным. | (A !=B) верно. |
> | Проверяет, больше ли значение левого операнда, чем значение правого операнда. Если да, то условие становится истинным. | (A> B) неверно. |
< | Проверяет, меньше ли значение левого операнда значения правого операнда. Если да, то условие становится истинным. | (A |
>= | Проверяет, больше ли значение левого операнда или равно значению правого операнда. Если да, то условие становится истинным. | (A>=B) неверно. |
<= | Проверяет, меньше ли значение левого операнда или равно значению правого операнда. Если да, то условие становится истинным. | (A <=B) верно. |
Логические операторы
В следующей таблице показаны все логические операторы, поддерживаемые языком C. Предположим, переменная A содержит 1 и переменную B содержит 0, то −
Показать примеры
Оператор | Описание | Пример |
---|---|---|
&& | Вызывается оператор логического И. Если оба операнда отличны от нуля, условие становится истинным. | (A &&B) ложно. |
|| | Вызывается оператор логического ИЛИ. Если любой из двух операндов отличен от нуля, условие становится истинным. | (A || B) верно. |
! | Вызывается оператор логического НЕ. Он используется для изменения логического состояния своего операнда. Если условие истинно, то логический оператор НЕ сделает его ложным. | !(A &&B) верно. |
Побитовые операторы
Побитовый оператор работает с битами и выполняет побитовые операции. Таблицы истинности для &, | и ^ следующие:
p | q | p &q | p | д | p ^ q |
---|---|---|---|---|
0 | <тд>0тд> <тд>0тд> <тд>0тд> <тд>0тд>||||
0 | <тд>1тд> <тд>0тд> <тд>1тд> <тд>1тд>||||
1 | <тд>1тд> <тд>1тд> <тд>1тд> <тд>0тд>||||
1 | <тд>0тд> <тд>0тд> <тд>1тд> <тд>1тд>
Предположим, что A =60 и B =13 в двоичном формате, они будут следующими —
А =0011 1100
Б =0000 1101
------------------
А&В =0000 1100
А|В =0011 1101
А^В =0011 0001
~А =1100 0011
В следующей таблице перечислены побитовые операторы, поддерживаемые C. Предположим, что переменная «A» содержит 60, а переменная «B» содержит 13, тогда -
Показать примеры
Оператор | Описание | Пример |
---|---|---|
& | Двоичный оператор AND копирует бит в результат, если он существует в обоих операндах. | (A и B) =12, т. е. 0000 1100 |
| | Двоичный оператор ИЛИ копирует бит, если он существует в любом из операндов. | (A | B) =61, т. е. 0011 1101 |
^ | Двоичный оператор XOR копирует бит, если он установлен в одном операнде, но не в обоих. | (A ^ B) =49, т. е. 0011 0001 |
~ | Двоичный оператор дополнения до единицы является унарным и имеет эффект "переворачивания" битов. | (~A ) =~(60), т. е. -0111101 |
< | Двоичный оператор сдвига влево. Значение левого операнда сдвигается влево на количество битов, указанное правым операндом. | A <<2 =240, т. е. 1111 0000 |
>> | Двоичный оператор сдвига вправо. Значение левого операнда сдвигается вправо на количество битов, указанное правым операндом. | A>> 2 =15, т. е. 0000 1111 |
Операторы присваивания
В следующей таблице перечислены операторы присваивания, поддерживаемые языком C —
Показать примеры
Оператор | Описание | Пример |
---|---|---|
= | Простой оператор присваивания. Присваивает значения правых операндов левому операнду | C =A + B присвоит C значение A + B |
+= | Добавить оператор присваивания И. Он добавляет правый операнд к левому операнду и присваивает результат левому операнду. | C +=A эквивалентно C =C + A |
-= | Оператор присваивания и вычитания. Он вычитает правый операнд из левого операнда и присваивает результат левому операнду. | C -=A эквивалентно C =C - A |
*= | Умножение И оператор присваивания. Он умножает правый операнд на левый операнд и присваивает результат левому операнду. | C *=A эквивалентно C =C * A |
/= | Оператор деления и присваивания. Он делит левый операнд на правый операнд и присваивает результат левому операнду. | C /=A эквивалентно C =C / A |
%= | Модуль И оператор присваивания. Он принимает модуль, используя два операнда, и присваивает результат левому операнду. | C %=A эквивалентно C =C % A |
<<= | Сдвиг влево И оператор присваивания. | C <<=2 совпадает с C =C <<2 |
>>= | Сдвиг вправо И оператор присваивания. | C>>=2 совпадает с C =C>> 2 |
&= | Побитовый оператор присваивания И. | C &=2 совпадает с C =C &2 |
^= | Побитовое исключающее ИЛИ и оператор присваивания. | C ^=2 совпадает с C =C ^ 2 |
|= | Побитовое ИЛИ и оператор присваивания. | C |=2 совпадает с C =C | 2 |
Разные операторы ↦ sizeof и тройной
Помимо операторов, описанных выше, есть несколько других важных операторов, включая sizeof. и ? : поддерживается языком C.
Показать примеры
Оператор | Описание | Пример |
---|---|---|
sizeof() | Возвращает размер переменной. | sizeof(a), где a — целое число, вернет 4. |
& | Возвращает адрес переменной. | <тд>&а; возвращает фактический адрес переменной.|
* | Указатель на переменную. | <тд>*а;тд>|
? : | Условное выражение. | Если условие верно? затем значение X :иначе значение Y |
Приоритет операторов в C
Приоритет оператора определяет группировку терминов в выражении и определяет способ оценки выражения. Некоторые операторы имеют более высокий приоритет, чем другие; например, оператор умножения имеет более высокий приоритет, чем оператор сложения.
Например, х =7 + 3 * 2; здесь x присваивается 13, а не 20, потому что оператор * имеет более высокий приоритет, чем +, поэтому он сначала умножается на 3*2, а затем добавляется к 7.
Здесь операторы с наивысшим приоритетом отображаются в верхней части таблицы, а с наименьшим — в нижней. Внутри выражения операторы с более высоким приоритетом будут оцениваться первыми.
Показать примеры
Категория | Оператор | Ассоциативность |
---|---|---|
Постфикс | () [] -> . ++ - - | Слева направо |
Унарный | +- ! ~ ++ - - (тип)* &sizeof | Справа налево |
Множественный | * / % | Слева направо |
Добавка | <тд>+-тд>Слева направо | |
Сдвиг | <тд><<>>тд>Слева направо | |
Относительный | <<=>>= | Слева направо |
Равенство | ==!= | Слева направо |
Побитовое И | <тд>&тд>Слева направо | |
Побитовое исключающее ИЛИ | <тд>^тд>Слева направо | |
Побитовое ИЛИ | <тд>|тд>Слева направо | |
Логическое И | <тд>&&тд>Слева направо | |
Логическое ИЛИ | <тд>||тд>Слева направо | |
Условное | <тд>?:тд>Справа налево | |
Назначение | =+=-=*=/=%=>>=<<=&=^=|= | Справа налево |
Запятая | <тд>,тд>Слева направо |
Язык C