Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Для этого достаточно применить операцию & к делимому с масками 0x01, 0x03, 0x07, 0x0f, 0x1f и т.д




Упр. Чему он равен? С помощью операции & можно определить остаток от деления операнда типа unsigned int на 2, 4, 8, 16 и т.д.

В этом примере выделяется последний байт числа.

Оператор & сравнивает каждый бит первого операнда с соответствующим битом второго операнда. Если оба бита =1, то соответствующий бит результата =1, иначе = 0. Оператор & часто используется для выделения некоторого множества битов.

Операторы - + * / применимы к целочисленным и вещественным типам данных. Если оператор деления (/) применяется к целому числу (или символу), дробная часть отбрасывается. Оператор деления по модулю (%) возвращает остаток целочисленного деления. Его нельзя применять к вещественным числам (числам с плавающей точкой). Унарный минус меняет знак своего операнда на противоположный (умножает свой операнд на -1). Унарный плюс не меняет знак своего операнда.

Термину «оператор языка C» соответствует термин «операция языка Паскаль», а вместо привычного «оператор языка» будут применяться слова «инструкция языка». Это связано с проблемами, возникающими при переводе английских слов operator и statement.

Разделяются по количеству операндов на унарные, бинарные и один тернарный (три операнда) оператор. Унарные операторы, кроме того, разделяются по расположению знаков относительно операнда на префиксные и постфиксные.

Приведение типов.

Выражения.

Операторы языка С++.

Вакуоли с клеточным соком: золотая кладовая!- здесь растворены БАВ растений

B молодых клетках вакуолей много, они мелкие. В старых клетках одна большая вакуоль.

1. обеспечивают тургор в клетке. 2. накапливают питательные вещества. 3. накапливают ядовитые

вещества, предохраняя клетку и растение от уничтожения.

Химический состав клеточного сока:

До 95 % воды, в которой растворены различные органические и минеральные вещества.

Операторы языка C++

ПонятиеL-выражений (L-values)

Некоторые операторы (присваивания, декремент, инкремент и т.д.) изменяют значение одного из своих операндов. Не всякое выражение может служить изменяемым операндом таких операций. На этом месте должна стоять конструкция, однозначно адресующая некоторый участок памяти (например, имя переменной). Подобного рода выражения получили название L-выражений (L-values).

Арифметические операторы
-вычитание и унарный минус: -x, x-y
+
сложение и унарный плюс: +x, x+y
*
умножение: x*y
/
деление: x/y
%
получение остатка (деление по модулю): x%y
++ инкремент: ++x, x++ (x = x+1)
--
декремент: --x, x-- (x = x-1)

int a=3,b=11,c=0,d;

d = b % a; // результат: 2

d = a % b; // результат: 3

d = b % с; // результат: сообщение об ошибке

d = b / a; // результат: 3

d = a / b; // результат: 0

d = b / с; // результат: сообщение об ошибке

float a=3, b=11, c=0, d;

d = b % a; // сообщение об ошибке

d = b % с; // сообщение об ошибке

d = b / a; // результат: 3.666667

d = a / b; // результат: 0.272728

d = b / с; // сообщение об ошибке

int a=3,b=11;

float x=3;

cout << (b/a) << endl << (b/x);

результат:

3

3.666667

Операторы инкремента и декремента
Унарные операторы (++) и (–-) (инкремент и декремент) изменяют на единицу свой операнд. Префиксные (до) операторы указывают, что сначала увеличить (или уменьшить) значение переменной, а затем использовать это значение.
Постфиксные (после) указывают, что сначала использовать значение переменной, а затем увеличить (или уменьшить) его.
В программе вместо строки
x + 1;
можно записать строку
x++;
или
++x;
В подобной ситуации, когда оператор ++ является единственным в выражении, не имеет значения место его расположения: до имени переменной или после. Ее значение в любом случае увеличится на единицу.

int i = 3, j, k = 0;

Теперь проанализируем, как изменятся значения переменных в следующих выражениях (предполагается, что они выполняются не последовательно, а по отдельности):

k = ++i; // i = 4, k = 4

k = i++; // i = 4, k = 3

k = --i; // i = 2, k = 2

k = i--; // i = 2, k = 3

i = j = k--; // i = 0, j = 0, k = -1

int х=5;
--x+х // значение выражения=8, х=4
х+x-- // значение выражения=10, х=4

Побочные эффекты
int c, d, t = 3;
c = ++t+1; // c=5, t=4
d = t++ + t++; // не определен

Чтобы избежать ошибок
M Не применяйте операции увеличения или уменьшения к переменной, присутствующей в более чем одном аргументе функции.
Не применяйте операции увеличения или уменьшения к переменной, которая входит в выражение более одного раза.

 

Порядок вычисления операторов

() слева направо
- (унарный) слева направо
* / %
слева направо
+ - (вычитание) слева направо
=
справа налево

Побитовые операторы
Побитовые операторы выполняются над целыми числами: над каждым битом операндов. Результатом является целое число.
~ -отрицание: ~x
& - побитовое “и” (and)
| - побитовое “или” (or)
^ - побитовое “исключающее или” (xor)

Оператор ~ меняет в битовом представлении операнда 0 на 1, а 1 - на 0.
Например:

unsigned short y = 0xFFFF; //ffff
y = ~y;

cout << hex << y << endl; //0


short int a=0x45ff;
~ a; // -0x3a00
//0100 0101 1111 1111

//1011 1010 0000 0000

//-0x3a00

234567 & 255




Поделиться с друзьями:


Дата добавления: 2013-12-13; Просмотров: 1051; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.