| Знак операции | Операция |
| * | Умножение |
| / | Деление |
| % | Остаток от деления |
| + | Сложение |
| - | Вычитание |
| << | Сдвиг влево |
| >> | Сдвиг вправо |
| < | Меньше |
| > | Больше |
| <= | Меньше или равно |
| >= | Больше или равно |
| = = (=) | Логическое равно |
| != | Не равно |
| & | Поразрядное логическое И |
| | | Поразрядное логическое ИЛИ |
| ^ | Поразрядное исключающее ИЛИ |
| && | Логическое И |
| || | Логическое ИЛИ |
| , | Последовательное вычисление |
Операция ”остаток от деления” (%) имеет результатом остаток от деления первого операнда на второй. Знак результата зависит от конкретной реализации. В Visual C++ знак результата совпадает со знаком первого операнда.
Пример:/* Остаток от деления */
int iVar1=49, iVar2=10,iVar3,iVar4,iVar5,iVar6;
iVar3=iVar1%iVar2;
iVar4=-iVar1%-iVar2;
iVar5=iVar1%-iVar2;
iVar6=-iVar1%iVar2;
printf("++=%d\t--=%d\t+-=%d\t-+=%d\n",iVar3,iVar4,iVar5,iVar6);
Операции сдвига сдвигают операнд влево (<<) или вправо (>>) на число битов, заданное вторым операндом. Оба операнда должны быть целыми величинами.
Замечание: В языке Си ”истина” считается любое число, не равное 0.
Пример:
bool bBool1,bBool2,bBool3,bBool4,bBool5;
bBool1=-31;
bBool2=0;
bBool3=!bBool1;
bBool4=true;
bBool5=false;
printf("bBool1=%d\tbBool2=%d\tbBool3=%d\n",bBool1,bBool2,bBool3);
printf("bBool4=%d\tbBool5=%d\n",bBool4,bBool5);
Операция поразрядного логического И (&) сравнивает каждый бит первого операнда с соответствующим битом второго операнда по правилу:
Операция поразрядного логического ИЛИ (|) сравнивает каждый бит первого операнда с соответствующим битом второго операнда по правилу:
Операция поразрядного исключающего ИЛИ (^)сравнивает каждый бит первого операнда с соответствующим битом второго операнда по правилу:
Логические операции:
Операция && (логическое И) (значение обоих операндов - истина):
Операция || (логическое ИЛИ)(значение хотя бы одного операнда -истина):
Операция! (НЕ) (истина, если была ложь и наоборот).
Операция последовательного вычисления (,) используется обычно для вычисления двух или более выражений там, где по синтаксису допустимо только одно выражение. Эта операция вычисляет два операнда последовательно слева направо.
Пример:
for(i=0, j=10; i<MAX && 2*j<MAX; i++)
#include<stdio.h>
int main()
{
int iVar1=8, iVar2;
printf("Right %d\t%d\t%d\n",iVar1>>1,iVar1>>2,iVar1>>3); // сдвиг вправо
printf("Left %d\t%d\t%d\n",iVar1<<1,iVar1<<2,iVar1<<3);
// сдвиг влево
iVar1=-8;
printf("Right %d\t%d\t%d\n",iVar1>>1,iVar1>>2,iVar1>>3); // сдвиг вправо
printf("Left %d\t%d\t%d\n",iVar1<<1,iVar1<<2,iVar1<<3);
// сдвиг влево
printf("Input iVar1, iVar2\t");
scanf("%d%d",&iVar1,&iVar2);
printf("iVar1&&iVar2=%d\n",iVar1&&iVar2); // логическое И
printf("iVar1||iVar2=%d\n",iVar1||iVar2); // логическое ИЛИ
printf("!iVar1=%d\n",!iVar1); // отрицание НЕ
return 0;
}






