Логические операции. В Си используются следующие обозначения для логических операций: || логическое "или" (логическое сложение)&& логическое "и"
В Си используются следующие обозначения для логических операций:
|| логическое "или" (логическое сложение)&& логическое "и" (логическое умножение) ! логическое "не" (логическое отрицание)Логические константы "истина" и "ложь" обозначаются через true и false (это ключевые слова языка). Примеры логических выражений:
bool a, b, c, d;int x, y; a = b || c; // логическое "или"d = b && c; // логическое "и"a = !b; // логическое "не"a = (x == y); // сравнение в правой частиa = false; // ложьb = true; // истинаc = (x > 0 && y != 1); // c истинно, когда // оба сравнения истинныСамый высокий приоритет у операции логического отрицания, затем следует логическое умножение, самый низкий приоритет у логического сложения.
Унарные и бинарные операции
По количеству операндов, участвующих в операции, операции подразделяются на унарные, бинарные и тернарные.
В языке Си имеются следующие унарные операции:
- арифметическое отрицание (отрицание и дополнение);
~ побитовое логическое отрицание (дополнение);
! логическое отрицание;
* разадресация (косвенная адресация);
& вычисление адреса;
+ унарный плюс;
++ увеличение (инкремент);
-- уменьшение (декремент);
sizeof размер .
Унарные операции выполняются справа налево.
Операции увеличения и уменьшения увеличивают или уменьшают значение операнда на единицу и могут быть записаны как справа так и слева от операнда. Если знак операции записан перед операндом (префиксная форма), то изменение операнда происходит до его использования в выражении. Если знак операции записан после операнда (постфиксная форма), то операнд вначале используется в выражении, а затем происходит его изменение.
Пример
++A префиксная форма
A++ постфиксная форма
Пример
#include<stdio.h>
#include <math.h>
void main(void)
{//демонстрирует различия в выражениях
//a++;++a;
int a=20;
int b=40;
a++;
++b;
printf("a = %d b = %d \n",a,b);
printf("a = %d b = %d \n",a++,++b);
}
Результат

В отличие от унарных, бинарные операции, список которых приведен в табл., выполняются слева направо.
Таблица
| Знак операции | Операция | Группа операций |
| * | Умножение | Мультипликативные |
| / | Деление | |
| % | Остаток от деления | |
| + | Сложение | Аддитивные |
| - | Вычитание | |
| << | Сдвиг влево | Операции сдвига |
| >> | Сдвиг вправо | |
| < | Меньше | Операции отношения |
| <= | Меньше или равно | |
| >= | Больше или равно | |
| == | Равно | |
| != | Не равно | |
| & | Поразрядное И | Поразрядные операции |
| | | Поразрядное ИЛИ | |
| ^ | Поразрядное исключающее ИЛИ | |
| && | Логическое И | Логические операции |
| || | Логическое ИЛИ | |
| , | Последовательное вычисление | Последовательного вычисления |
| = | Присваивание | Операции присваивания |
| *= | Умножение с присваиванием | |
| /= | Деление с присваиванием | |
| %= | Остаток от деления с присваиванием | |
| -= | Вычитание с присваиванием | |
| += | Сложение с присваиванием | |
| <<= | Сдвиг влево с присваиванием | |
| >>= | Сдвиг вправо присваиванием | |
| &= | Поразрядное И с присваиванием | |
| |= | Поразрядное ИЛИ с присваиванием | |
| ^= | Поразрядное исключающее ИЛИ с присваиванием |
Левый операнд операции присваивания должен быть выражением, ссылающимся на область памяти (но не объектом объявленным с ключевым словом const), такие выражения называются леводопустимыми к ним относятся:
- идентификаторы данных целого и плавающего типов, типов указателя, структуры, объединения;
- индексные выражения, исключая выражения имеющие тип массива или функции;
- выражения выбора элемента (->) и (.), если выбранный элемент является леводопустимым;
- выражения унарной операции разадресации (*), за исключением выражений, ссылающихся на массив или функцию;
- выражение приведения типа если результирующий тип не превышает размера первоначального типа.
При записи выражений следует помнить, что символы (*), (&), (!), (+) могут\ обозначать унарную или бинарную операцию.
Дата добавления: 2016-04-14; просмотров: 1235;
