Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессорная техника.doc
Скачиваний:
5
Добавлен:
01.05.2025
Размер:
6 Мб
Скачать
☆

Операции присвоения.

  1. Простое присваивание.

Е1=Е2

Е1 – переменная.

Е2 – выражение любого типа.

Пример: i = 3.

  1. Составные операции присваивания.

Х = х + 3

У = у * 3

Формат

Применение

Описание

+ =

E1+ =E2

Присвоить сумму

Е1=Е1 + Е2

- =

E1- =E2

Присвоить разницу

Е1=Е1 - Е2

/ =

E1/ =E2

Присвоить частное

Е1=Е1/Е2

* =

E1* =E2

Присвоить произведение

Е1=Е1 * Е2

% =

E1% = E2

Присвоение остатка

Е1=Е1 % Е2

<<=

E1<<=E2

Присвоение результата сдвига влево

Е1=Е1 << Е2 (Е2 число сдвигов)

>>=

E1>>=E2

Присвоение результата сдвига вправо

Е1=Е1 >> Е2

 =

E1 =E2

Присвоение результата поразрядного ИЛИ

Е1=Е1  Е2

& =

E1& =E2

Присвоение результата поразрядного И

Е1=Е1 & Е2

^ =

E1^ =E2

Присвоение результата поразрядного исключающего ИЛИ

Е1=Е1 ^ Е2

Условная операция.

Е1 ? Е1 : Е2;

Е1 – выражение целого или вещественного типа.

Е2, Е3 – должны совпадать по типам (могут быть любого типа).

Выполнение данной операции зависит от Е1:

  • Если Е1 истинно (отличное от 0), то выполняется Е2.

  • Если Е1=0, (ложно) то выполняется Е3.

Пример:

Int a=4, b=3, c;

C = c>b?a*a+b*b:0;

C = a*a+b*b = 25

Операция sizeof (определение размера).

Результатом является размер (в байтах) типа или переменной в памяти.

Если применяется к массиву, то эта операция возвращает размер массива в байтах, который он занимает в памяти.

Пример:

Int i,r;

Char ch;

Long double ff;

r = sizeof int; //r=2

r = sizeof i; //r=2

r = sizeof long double; //r=10

Указатели.

Являются очень сложными.

Объявление переменной, выделяет в памяти ячейки. Можно определить в какую ячейку компилятор займет данные:

Int i;

I = 35;

&i

printf (“Адрес %d \n”, &i);

Указатели – это особый вид переменной которая хранит адрес переменной какого либо типа (то есть номер ячейки памяти, где находятся данные)

Указатели объявляются: тип*имя_указателя.

Тип – тип переменной, на которую указывает указатель.

Пример: int *iptr;

Float *fptr;

Если переменная определенна, она должна на что то указывать:

Int *iptr;

Int i;

Iptr = &i;

Пример:

#include <stdio.h>

main ( )

int i=35;

int *iptr;

iptr = &i;

printf (“Значение переменной”, i);

Массивы

Это располож. вплотную друг за другом в памяти эл-ми одного типа.

Т ип имя_массива[кол-во]

Целочисленное беззнаковое

Int array [40]

Св-ва массива:

1.Все эл-ты имеют один тип

2.Все эл-ты расположены в памяти друг за другом;

индекс первого эл-та=0.

3.Имя массива явл. Указателем-константой=адресу начала массива( т.е. мл.б. первого эл-та массива )

При описании массива мл.б. выполнена инициализация его эл-ов:

1.Инициализация по умолчанию( производится компилятором только для статических или внешних массивов ) – все эл-ты массива заменяются нулями.

2.Явная инициализация эл-ов( после описания массива помещается список нач. знач. Эл-ов заключенный в {})

Сущ. 2 формы явной инициализации:

1.Явное указание числа эл-ов массива и список нач. знач.( возможно с меньшим числом эл-ов ):

int array [10] = { 1,2,3,4,5 };

array [0] = 1;

array [1] = 2;

…..

array [4] = 5;

а) Для статич. и внешн. массивов:

array [5] = 0;

…..

array [9] = 0;

б) Для автомат. массивов знач. неиниц-их эл-ов будет случайным:

array [5] = ?;

…..

array [9] = ?;

Если число эл-ов массива меньше, чем в описке иниц-ии, то, компилятор выдаст ошибку.

2. Только , со списком нач. значений( компилятор сам определяет кол-во эл-ов по списку иниц-ии)

char array []= { ‘A’, ‘B’, ‘C’, ‘D’};

Доступ к отдельным эл-ам массива мл. б. 2 способами:

1.С помощ. индекса

2.Спомощ. указателя

1 Для ссылки на эл-т указывается его порядковый номер в массиве.

Main ()

{

int a[] = { 1,2,3,4,5 };

int index = 0, first, last, bad;

first = a [ index ]; // first = 1;

last = a [ index+4 ]; // last = 5;

bad = a [ index+6 ]; // bad – случайное

В языке CI отсутствует контроль за границами массива. Этот контроль можно делать специально в программе, например, с помощью sizeof. В случае применения к массиву рез-т – число байт, кот. занимает массив в памяти.

Int array [] = { 1,2,3,4,5,6,7 };

Int members;

Members = sizeof ( array ) / sizeof ( int );

Рез-т = 7 эл-ов.

2 Т.к. имя массива – это указатель на мл. б. 1-го эл-та, то используя операцию * можно выполнить доступ к любому из эл-ов массива

array [ i ] и *( array+i )

array = & array [ 0 ];

# include < stdio.h >

# define num 10

main ()

{

int array [ num ];

int index; // прим. Индексации к мас.

For ( index = 0 ; index < num >; index ++)

Array [ index ] = index*10;

// Применение арифметики указателей;

for ( index = 0, index < num >; index++)

printf ( “ Эл-ты %d = %d \ n ”, index, *(array+index));

// Применение индексации к указ.

Int * iptr;

Iptr = array;

For ( index = 0; index < num >; index++)

Printf( эл-нт %d = %d\n”, index, iptr [ index ]);

Return 0;

}

Язык CI поддерживает многомерные массивы.

Размерность массива dimension – это число индексов, использ. Для ссылки на конкретный эл-т массива

I nt array [10] [20];

Столбцы Строки

Int array [3] [3] = {00,01,02,

10,11,12,

20,21,22 };

int array [3] [3] = {{ 00,01,02 } { 10,11,12} { 20,21,22 };