Главная страница
Навигация по странице:


  • Лекции. Основные понятия и определения


    Скачать 1.94 Mb.
    НазваниеОсновные понятия и определения
    Дата27.03.2018
    Размер1.94 Mb.
    Формат файлаdocx
    Имя файлаЛекции.docx
    ТипКонтрольные вопросы
    #39570
    страница32 из 58
    1   ...   28   29   30   31   32   33   34   35   ...   58

    11.2. Уровень 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 в порядке их следования.

    for(k=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) // 11 байтов

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

    В языке Basic используются только унарные операторы + и -.
    1   ...   28   29   30   31   32   33   34   35   ...   58


    написать администратору сайта