Курс лекций. - Микропроцессоры


Операторы языка программирования PL/M-51 - часть 4


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

Пример использования адресных операций при работе с указателем:

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

Может возникнуть вопрос: а зачем тогда нужны указатели, если можно прекрасно обойтись обычным присваиванием переменной? Использование указателей очень удобно при написании подпрограмм. Ведь одни и те же действия подпрограмма должна выполнять над различными участками памяти. Например при выводе информации через последовательный порт:

void PutNadp(char code *c)//Объявлен указатель c на символ в памяти программ {do{while(!TI); //Подождать готовности последовательного порта TI=0; SBUF=*c++; //Передать очередной символ }while(*c!=0); //Если передан последний символ строки } //то выйти из подпрограммы ... PutNadp("привет!"); //Вывод одной строки ... PutNadp("Вася!"); //Вывод второй строки

Приоритеты выполнения операций.

В языке С-51 операции с высшими приоритетами вычисляются первыми. Наивысшим приоритетом является приоритет равный 1. Приоритеты и порядок операций приведены в табл. 1. Порядок вычисления выражения следующий: сначала выполняются операторы в круглых скобках, в них от старшего приоритета к младшему, а среди равнозначных операторов - слева направо.

Таблица 1

Приоритет Знак операции Типы операции Порядок выполнения
2 () [] . -> Выражение Слева направо
1 - ~ ! * & ++ -- sizeof приведение типов Унарные Справа налево
3 * / % Мультипликативные Слева направо
4 + - Аддитивные
5 << >> Сдвиг
6 < > <= >= Отношение
7 == != Отношение (равенство)
8 & Поразрядное И
9 ^ Поразрядное исключающее ИЛИ
10 | Поразрядное ИЛИ
11 && Логическое И
12 || Логическое ИЛИ
13 ? : Условная
14 = *= /= %= += -= &= |= >>= <<= ^= Простое и составное присваивание Справа налево
15 , Последовательное вычисление Слева направо

[ Главная ]




- Начало -  - Назад -