Поразрядные логические операции

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);

Преобразование типов:

Рассмотрим три правила преобразования типов.

  1. Если операция выполняется над данными двух различных типов, обе величины приводятся к “высшему” из двух типов.
  2. Применение ключевого слова “unsigned” повышает ранг соответствующего типа.
  3. В операторе присваивания конечный результат вычисления приводится к типу переменной, которой должно быть присвоено это значение.

Существует возможность точно указать тип данных, к которому необходимо привести некоторую величину. Этот способ называется ”приведением типов” и состоит в следующем: перед данной величиной в круглых скобках записывается имя требуемого типа.

Пример:

int iVar;

iVar=1.6+1.7; // 3 (автоматическое преобразование типов)

iVar=(int)1.6+(int)1.7; // 2

(float)9 // 9.0


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: