Обработка данных и вычисление значений осуществляется выражениями. Выражение состоит из операций. В таблице приведены все операции языка Си в порядке убывания приоритета.
ТАБЛИЦА 5. ОПЕРАЦИИ ЯЗЫКА Си.
| операция | описание | пример | приоритет, ассоциативность | ||
| Первичные операции | |||||
| () | Вызов функции | fgetc (pcx) | 16, слева направо | ||
| [ ] | Индекс массива | chr [128] | 16, слева направо | ||
| . | Элемент структуры | coord.x | 16, слева направо | ||
| ® | Элемент структуры | coord®x | 16, слева направо | ||
| Унарные операции | |||||
| ++ | Увеличение на 1 | i++ | 15, слева направо | ||
| - - | Уменьшение на 1 | i- - | 15, слева направо | ||
| Sizeof | Размер в байтах | sizeof (b1) | 14, справа налево | ||
| (mun) | Преобразование типа | (float)(x) | 14, справа налево | ||
| ~ | Побитовое НЕ | ~a | 14, справа налево | ||
| ! | Логическое НЕ | !EOF | 14, справа налево | ||
| – | Унитарный минус | –i | 14, справа налево | ||
| & | Адрес | &x | 14, справа налево | ||
| * | Содержимое адреса | *x | 14, справа налево | ||
| Бинарные операции мультипликативные | |||||
| * | Умножение | 16*16 | 13,слева направо | ||
| / | Деление | x/8 | 13,слева направо | ||
| % | Остаток деления | x%8 | 13,слева направо | ||
| Аддитивные | |||||
| + | Сложение | x+b | 12, слева направо | ||
| – | Вычитание | x–b | 12, слева направо | ||
| Побитовый сдвиг | |||||
| << | Сдвиг влево | 0x80<<i | 11,слева направо | ||
| >> | Сдвиг вправо | 0x80>>i | 11,слева направо | ||
| Операции отклонения | |||||
| < | Меньше, чем | i<a | 10, слева направо | ||
| > | Больше, чем | i>a | 10, слева направо | ||
| Равенства | |||||
| = = | Равно | x= =b | 9, слева направо | ||
| != | Не равно | x!=b | 9, слева направо | ||
| Битовые | |||||
| & | Побитовое И | 8, слева направо | |||
| ^ | Побитовое исключающее ИЛИ | a^b | 7, слева направо | ||
| ! | Побитовое или | x!b | 6, слева направо | ||
| Логические | |||||
| && | Логическое И | x>1&&x<3 | 5, слева направо | ||
| || | Логическое ИЛИ | x<0||x= =0 | 4, слева направо | ||
| Условный | |||||
| ? | При условии | a>b?1:0 | 3, справа налево | ||
| Присваивания | |||||
| = | Присваивание | a=4 | 2, справа налево | ||
| *= | Присваивание произведения | x*=10 | 2, справа налево | ||
| /= | Частного | x/=10 | 2, справа налево | ||
| операция | описание | пример | приоритет, ассоциативность | ||
| %= | Остатка деления | x%=10 | 2, справа налево | ||
| += | Суммы | x+=10 | 2, справа налево | ||
| –= | Разности | x–=10 | 2, справа налево | ||
| <<= | Левого сдвига | x<<=10 | 2, справа налево | ||
| >>= | Правого сдвига | x>>=10 | 2, справа налево | ||
| &= | Присвоение И | i&=j | 2, справа налево | ||
| ^= | Присвоение исключающего ИЛИ | i^=j | 2, справа налево | ||
| != | Присвоение ИЛИ | i!=j | 2, справа налево | ||
| , | Запятая | x=2,x=y | 1, слева направо | ||
Дадим пояснение побитовым операциям. Если имеется следующее побитовое значение 10011110, то сдвиг влево на четыре бита дает результат 11100000, а сдвиг вправо на четыре бита приведет к значению 00001001.
Битовое И означает, что если имеется два значения 10011110 и 11111000, то побитовое умножение их приведет к результату: 10011100. Исключающее ИЛИ этих значений определяет: 01100010. В этом случае единицы ставятся там, где биты не совпадают, а нули – где совпадают.
Результатом побитового ИЛИ будет: 11111110. Единицы ставятся в тех местах, где хотя бы один из битов равен единице. В этом случае справедлива арифметика 1+1=1, 0+1=1.
Обратим внимание, что в случае операции i++ вначале используется старое значение i, а потом выполняется его приращение.
Унарный оператор! преобразует ненулевой операнд в 0, а нуль в 1.






