Читаем Занимательно о микроконтроллерах полностью

Операнд должен быть целого типа. Пример:

char b = 9;

char f;

f = ~b;

Двоичное значение 9 равно 00001001. В результате операции ~b будет получено двоичное значение 11110110.

Операции разадресации и вычисления адреса

Эти операции используются для работы с переменными типа указатель.

Операция разадресации ('*') позволяет осуществить доступ к переменной при помощи указателя. Операнд операции разадресации обязательно должен быть указателем. Результатом операции является значение переменной, на которую указывает операнд. Типом результата является тип переменной, на которую ссылается указатель.

В отличие от прямого использования переменных использование указа- указателей может приводить к непредсказуемым результатам. Результат не определен, если указатель содержит недопустимый адрес.

Рассмотрим типичные ситуации, когда указатель содержит недопустимый адрес:

— указатель является нулевым;

— указатель определяет адрес такого объекта, который не является активным в момент использования указателя;

— указатель определяет адрес, который не выровнен до типа объекта, на который он указывает;

— указатель определяет адрес, не используемый выполняющейся программой.

Операция вычисления адреса переменной (&) возвращает адрес своего операнда. Операндом может быть любой идентификатор. Имя функции или массива также может быть операндом операции «адрес», хотя в этом случае применение знака '&' является лишним, т. к. имена массивов и функций изначально являются адресами.

Операция & не может применяться к элементам структуры, являющимся полями битов, т. к. эти элементы не выровнены по байтам. Кроме того, эта операция не может быть применена к объектам с классом памяти register.

Примеры:

int t,             //Объявляется переменная целого типа t

     f=0,         //Объявляется переменная f и ей присваивается 0

     *adress;   //Объявляется указатель на переменные целого типа

 adress = &t  // указателю adress присваивается адрес переменной t

*adress =f;    /* переменной, находящейся по адресу, содержащемуся в переменной adress, т.е. переменной t, присваивается значение переменной f, т.е. 0, что эквивалентно оператору t=f; */

Операция sizeof

С помощью операции sizeof можно определить размер области памяти, которая соответствует идентификатору или типу переменной. Операция sizeof записывается в следующем виде:

"sizeof ("Выражение') '

В качестве выражения может быть использован любой идентификатор, либо имя типа, заключенное в скобки. Отметим, что не может быть использовано имя типа void, а идентификатор не может относиться к полю битов структуры или быть именем функции.

Если в качестве выражения указано имя массива или структуры, то результатом является размер всего массива (т. е. произведение числа элементов на длину типа) или структуры.

Мультипликативные операции

К этому классу операций относятся операции умножения (*), деления (/) и получения остатка от деления (%). Операндами операции % должны быть целые числа. Отметим, что типы операндов операций умножения и деления могут отличаться, и для них справедливы правила преобразования типов. Типом результата является тип операндов после преобразования.

Операция умножения (*) выполняет умножение операндов. Тип выполняемой операции умножения зависит от типа операндов. Перед операцией операнды приводятся к одному типу. Например:

int     i=5;

float  f=0.2;

float  g,z;

     g=f*i; 

Тип переменной i преобразуется к типу float, затем выполняется умножение а результат умножения присваивается переменной g.

Операция деления (/) выполняет деление первого операнда на второй. Если в качестве операндов используются переменные целого типа, то выполняется целочисленное деление. Если при этом операнды не делятся нацело, то остаток деления отбрасывается. При попытке деления на ноль выдается сообщение об ошибке во время выполнения программы. Пример использования операции деления:

int i=49, j=10, n. m;

n = i/j;                     /* результат 4 */

m = i/(-j);                /* результат -4 */ 

Операция вычисления остатка от деления (%) дает остаток от деления первого операнда на второй. Знак результата зависит от конкретной реализации транслятора с языка программирования. В языке программирования С-51 знак результата совпадает со знаком делимого. Примеры выражений с использованием операции определения остатка:

Перейти на страницу:

Похожие книги

Электроника для начинающих (2-е издание)
Электроника для начинающих (2-е издание)

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию, елочные огни, электронные украшения, устройство преобразования звука, кодовый замок и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий. Во втором издании существенно переработан текст книги, в экспериментах используются более доступные электронные компоненты, добавлены новые проекты, в том числе с контроллером Arduino.

Чарльз Платт

Радиоэлектроника / Технические науки
Электроника для начинающих
Электроника для начинающих

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию для защиты от проникновения в дом, елочные огни, электронные украшения для одежды, устройство преобразования звука, кодовый замок, автономную роботизированную тележку и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий.Для начинающих радиолюбителей

Паоло Аливерти , Чарльз Платт

Радиоэлектроника / Технические науки
Искусство схемотехники. Том 3 (Изд.4-е)
Искусство схемотехники. Том 3 (Изд.4-е)

Широко известная читателю по предыдущим изданиям монография известных американских специалистов посвящена быстро развивающимся областям электроники. В ней приведены наиболее интересные технические решения, а также анализируются ошибки разработчиков аппаратуры: внимание читателя сосредотачивается на тонких аспектах проектирования и применения электронных схем. На русском языке издается в трех томах. Том 3 содержит сведения о микропроцессорах, радиотехнических схемах, методах измерения и обработки сигналов, принципах конструирования аппаратуры и проектирования маломощных устройств, а также обширные приложения. Для специалистов в области электроники, автоматики, вычислительной техники, а также студентов соответствующих специальностей вузов и техникумов.

Пауль Хоровиц , Уинфилд Хилл

Техника / Радиоэлектроника