int iVar1=0x5f, iVar2=0xa9;
int iResult;
iResult=iVar1&iVar2; // поразрядное логическое И
printf("iResult=%xh\n",iResult); // 9h
iResult=iVar1|iVar2; // поразрядное логическое ИЛИ
printf("iResult=%xh\n",iResult); // ffh
iResult=iVar1^iVar2; // поразрядное искл. ИЛИ
printf("iResult=%xh\n",iResult); // f6h
int iVar3=0x25,iVar4=0xa4;
iVar3+=iVar4;
printf("iVar3=%oo\tiVar3=%dd\tiVar3=%Xh\t",iVar3,iVar3,iVar3);
// 311 201 c9
Операции присваивания
| Знак операции | Название операции |
| ++ | Увеличение (инкремент) |
| -- | Уменьшение (декремент) |
| = | Простое присваивание |
| += | Сложение с присваиванием |
| -= | Вычитание с присваиванием |
| *= | Умножение с присваиванием |
| /= | Деление с присваиванием |
| %= | Целочисленное деление с присваиванием |
| <<= | Сдвиг влево с присваиванием |
| >>= | Сдвиг вправо с присваиванием |
| &= | Поразрядное логическое И с присваиванием |
| |= | Поразрядное логическое ИЛИ с присваиванием |
| ^= | Поразрядное исключающее ИЛИ с присваиванием |
Примеры:
a+=20; a=a+20;
d%=3.0’ d=d%3;
x*=3*y+12; x=x*(3*y+12);
Терарная операция.
Терарная операция включает в себя выражение с тремя операндами и имеет формат:
операнд1?орперанд2:операнд3;
Операнд1 – арифметическое или логическое выражение-условие.
Операнд2 – результат по выполнению условию.
Операнд3 – результат по не выполнению условию.
Пример:
int x, y=-5;
x=(y<=0)?-y:y;
printf(“x=%d\n”,x); // x=5
Если y<=0 => x=-y
y>0 =>x=y
Приоритеты операций и порядок выполнения
| Приоритет | Знак операции | Тип операции |
| () []. -> sizeof() | Круглые и квадратные скобки, точка, стрелка | |
| 2 (*) | - ~! * & ++ -- | Унарные |
| * / % | Мультипликативные | |
| + - | Аддитивные | |
| << >> | Побитовый сдвиг | |
| < > <= >= | Неравенство | |
| ==!= | Равенство | |
| & | Поразрядное И | |
| ^ | Поразрядное исключающее ИЛИ | |
| | | Поразрядное ИЛИ | |
| && | Логическое И | |
| || | Логическое ИЛИ | |
| ?: | Условное выражение | |
| 14 (*) | = *= /= %= += -= <<= >>= | Простое и составное присваивание |
| , | Последовательное вычисление |
Замечание: Все операции выполняются слева направо, кроме (*).
Примеры:
y=x/2+a*5%10; // y=(x/2)+((a*5)%10);
a=b+++c/5; // a=(b++)+(c/5);
Преобразование типов:
Рассмотрим три правила преобразования типов.
- Если операция выполняется над данными двух различных типов, обе величины приводятся к “высшему” из двух типов.
- Применение ключевого слова “unsigned” повышает ранг соответствующего типа.
- В операторе присваивания конечный результат вычисления приводится к типу переменной, которой должно быть присвоено это значение.
Существует возможность точно указать тип данных, к которому необходимо привести некоторую величину. Этот способ называется ”приведением типов” и состоит в следующем: перед данной величиной в круглых скобках записывается имя требуемого типа.
Пример:
int iVar;
iVar=1.6+1.7; // 3 (автоматическое преобразование типов)
iVar=(int)1.6+(int)1.7; // 2
(float)9 // 9.0






