| Операция
| Результат
| Ограничения
| Примеры выражений
|
| х=у
| у приводится к типу х;
х получает значение у
| х, у могут быть любого типа, но не массивом
| int a, b=2;
char c='A' (код 65)
float d=2.2;
a=b (результат=2)
a=c/2 (результат=32)
а=d (результат=2)
|
| х <оп> =у
| оп – знак операции
(+, –, *, /, %, <<,>>,&, |, ^)
х оп у приводится к типу х, х получает значение х оп у.
| х, у могут быть любого типа, но не массивом или структурой
| k+=2 (k=k+2)
k*=2 (k=k*2)
k>>=2 (k=k>>+2)
k&=2 (k=k&2)
|
Таблица приоритетов
| Приоритет
| Знак операции
| Тип операции
| Порядок выполнения операций одного
приоритета
|
|
| ( ) [ ] . - >
| первичные (вызов функции, выбор элемента массива, доступ к полю структуры)
| слева направо
|
|
| - ~ ! * ++ -- & (тип) sizeof
| унарные
| слева направо
|
|
| * / %
| мультипликативные
| слева направо
|
|
| + -
| аддитивные
| слева направо
|
|
| << >>
| сдвиг
| слева направо
|
|
| < <= > >=
| отношение (неравенство)
| слева направо
|
|
| = !=
| сравнения на равенство
| слева направо
|
|
| &
| побитовое И
| слева направо
|
|
| ^
| побитовое исключающее ИЛИ
| слева направо
|
|
| |
| побитовое ИЛИ
| слева направо
|
|
| &&
| логическое И
| слева направо
|
|
| ||
| логическое ИЛИ
| слева направо
|
|
| ? :
| условие
| слева направо
|
|
| = *= /= %= += -= <<= >>=
| присваивание
| слева направо
|
|
| ,
| запятая
| слева направо
|
Пример 1.
/*Программа демонстрирует работу с арифметическими операциями и операциями присваивания*/
#include <stdio.h>
void main() {
int a=5, b=2, vych, znak,
i=1, in, d=4, de, v=7,iv, q=3,dq,
t, r=8, n=41, k=28;
float c=2.7, sum, pro, del, ost, p=6.5, m=12.4;
/*Аддитивные операции*/
sum=a+c; /*сложение*/
printf("%2.1f\n",sum);
vych=a-b; /*вычитание*/
printf("%d\n\n",vych);
/*Мультипликативные операции*/
pro=a*c; /*произведение*/
printf("%3.2f\n",pro);
del=a/b; /*частное от деления*/
printf("%.2f\n",del);
ost=a%b; /*остаток от деления*/
printf("%1.2f\n",ost);
znak=-a; /*изменение знака*/
printf("%d\n\n",znak);
/*Операции увеличения (инкремент) и уменьшения (декремент)*/
in=++i; /*i увеличивается перед использованием*/
printf("%d %d\n",in,i);
de=--d; /*d уменьшается перед использованием*/
printf("%d %d\n",de,d);
iv=v++; /*после использования v увеличивается*/
printf("%d %d\n",iv,v);
dq=q--; /*после использования q уменьшается*/
printf("%d %d\n\n",dq,q);
/*Операции присваивания*/
t=a; /*t получает значение a*/ printf("%d\n",t);
r+=2; /*эквивалентно r=r+2*/ printf("%d\n",r);
p-=2; /*эквивалентно p=p-2*/ printf("%f\n",p);
n*=3; /*эквивалентно n=n*3*/ printf("%d\n",n);
m/=4; /*эквивалентно m=m/4*/ printf("%.3f\n",m);
k%=5; /*эквивалентно k=k%5*/ printf("%d\n",k);
}