Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Уровень 2 (унарные или одноместные операторы)




Порядок: ß

Операторы:

* - извлечь содержимое памяти по известному адресу,

& - получить адрес объекта, для которого задано определение,

+ - присвоение знака,

- - изменение знака,

! - логическое отрицание,

~ - обращение двоичного представления,

++ - увеличение,

-- - уменьшение,

(<имя-типа>) - приведение типа,

sizeof (a) - объем операнда в байтах, где a - выражение|имя-типа.

 

Рассмотрим правила и примеры применения некоторых операторов данной группы.

Операторы * и & применяются при работе с объектами типа указатель (pointer). * имеет операндом выражение типа указатель, то есть определяющее некоторый адрес в памяти, результатом будет значение, лежащее по этому адресу. Для оператора & операндом является любой объект программы (скаляр, массив или структура), которому выделена память. Результатом будет начальный адрес отведенной объекту памяти. Для переменных типа указатель литералы не определены, т.е. указателю нельзя задать непосредственно адрес памяти.

Пример.

short x, y, *px;

............

x=15;

px=&x;

y=*px; // Это эквивалентно y=x

Для указателей применимы операторы сложения и вычитания.

Пример.

y=*(px+a);

y будет равно значению, которое находится в памяти, смещенной относительно адреса px на a элементов типа short, т. е. на 2* a байтов. Такие манипуляции имеют смысл только для массивов, элементы которых по определению занимают непрерывную область памяти и располагаются с некоторого начального адреса.

Одноместный оператор + применяется редко, чтобы избежать перестановки коммутативных операндов, когда порядок вычислений существенен. Одноместный оператор - используется для изменения знака операнда и имеет особенности только для операндов типа unsigned, которые не могут принимать отрицательных значений.

Пример.

unsigned short a, b;

a=45846;

b=-a; // b=65536-45846=19690 Такую операцию называют сложением по модулю 216

Оператор ~ является битовой операцией и носит название обращение двоичного представления или поразрядное отрицание.

Пример.

unsigned char a, b;

................

a=201; // =3118=110010012

b=~a=54; // = 668=001101102

Операторы ++ и -- имеют 2 формы: постфиксную: p++ и префиксную: ++p. Разница между ними заключается в том, что, если эти операторы входят в состав более сложного выражения, то при постфиксной форме сначала вычисляется это более сложное выражение, затем происходит изменение значения переменной, а при префиксной форме – наоборот.

Примеры.

int x, n, y;

..........

n=5;

x=++n; // x=6; n=6

y=n++; // y=6; n=7

Дано {ai}, i=1...100. Сформировать {bk}, k=1...100 из ai<0 в порядке их следования.

k=0;

for (i=0; i<100; i++){

if (a[ i ]<0){

b[k++] = a[ i ];

}

}

Оператор sizeof (размер) используется для вычисления объема памяти, занимаемого операндом. Операнды бывают двух типов: <выражение>|<имя_типа >. В первом случае результатом будет значение выражения. Частным случаем выражения является имя объекта программы (скалярной переменной, массива или структуры).

Пример.

short a, b[100], x;

x= sizeof (a); // 2 байта

x= sizeof (b); // 200 байтов

 

Форма sizeof (<имя_типа>) в качестве результата дает объем памяти, отводимый под переменную данного типа. Заметим, что в качестве типа может использоваться тип данных, определенный программистом.

Пример.

sizeof (short) // 2 байта

sizeof (date) // 12 байтов

Чаще всего данный оператор употребляется при выделении памяти, управляемом программистом. Средства такого выделения памяти будут рассмотрены в другом разделе.




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


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


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



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




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