Знак операции | Операция |
* | Умножение |
/ | Деление |
% | Остаток от деления |
+ | Сложение |
- | Вычитание |
<< | Сдвиг влево |
>> | Сдвиг вправо |
< | Меньше |
> | Больше |
<= | Меньше или равно |
>= | Больше или равно |
= = (=) | Логическое равно |
!= | Не равно |
& | Поразрядное логическое И |
| | Поразрядное логическое ИЛИ |
^ | Поразрядное исключающее ИЛИ |
&& | Логическое И |
|| | Логическое ИЛИ |
, | Последовательное вычисление |
Операция ”остаток от деления” (%) имеет результатом остаток от деления первого операнда на второй. Знак результата зависит от конкретной реализации. В 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;
}