Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессоры(Коротицкий Евгений Викторович) / лабы_гр3480 / Основы языка Си для микроконтроллеров AVR.doc
Скачиваний:
1507
Добавлен:
18.04.2015
Размер:
797.7 Кб
Скачать
      1. Приоритеты операций и порядок вычислений

В языке Си операции с высшими приоритетами вычисляются первыми. Наивысшим является приоритет, равный 1. Приоритеты и порядок операций приведены в Табл. 6.

Табл. 6 – Приоритеты операций и порядок вычислений

Приоритет

Типы операции

Знак операции

Порядок выполнения

1

Выражение

0 []

->

Справа налево

2

Унарные

~! *

&

++

sizeof

type (приведение типов)

Слева направо

3

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

*

/ %

Слева направо

4

Аддитивные

+

Слева направо

5

Сдвиг

« »

Слева направо

6

Отношение

< >

<= >=

Слева направо

7

Отношение (равенство)

!=

Слева направо

8

Побитное И

&

Слева направо

9

Побитное исключающее ИЛИ

Слева направо

10

Побитное ИЛИ

1

Слева направо

11

Логическое И

&&

Слева направо

12

Логическое ИЛИ

II

Слева направо

13

Условная

Слева направо

14

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

* —

/= %= +=

&= 1=

»= «=

Справа налево

15

Последовательное вычисление

Слева направо

Пример:

/* Приоритеты операций и порядок вычислений */

unsigned char х= 0b11110000; Объявляем и инициализируем

// беззнаковый байт х unsigned char у = Ob00111100;

// Объявляем беззнаковый байт у

у&=~х|ОхАА;

/* Первой выполняется операция побитового логического отрицания (~) как имеющая самый высокий приоритет. После её выполнения все 1 в переменной х заменятся на 0, а 0 - на 1 (см. 9.1 Унарные операции). Затем выполняется операция побитного ИЛИ (I) полученного значения (Ob00001111) с числом ОхАА=Оb10101010. При этом каждый бит первого операнда сравнивается с соответствующим битом второго операнда. Если любой (или оба) из сравниваемых битов равен 1, то соответствующий бит результата устанавливается в 1, в противном случае - в 0 (см. Бинарные операции). Последней выполняется операция побитного ИЛИ с присваиванием (&=) значения у и результата предыдущих операций (Оb10101111). При этом каждый бит первого операнда сравнивается с соответствующим битом второго операнда. Если оба сравниваемых бита 1, то соответствующий бит результата устанавливается в 1, в противном случае - в 0 (см. Бинарные операции). Полученное значение (Оb00101100) присваивается переменной у. Результат: у=0b00101100 */

    1. Операторы

Порядок выполнения программы задают управляющие операторы.

Все операторы языка Си, кроме составных операторов, заканчиваются точкой с запятой (;), но в CodeVisionAVRдопускается и после составного оператора ставить точку с запятой.

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

Все операторы языка Си можно условно разделить на несколько категорий (см. Табл. 7)

Табл. 7Операторы языка Си

Категория

Оператор

Условные операторы

if— else

switch

Операторы цикла

for

while

do while

Операторы перехода

break

continue

return

goto

Другие операторы

Оператор-выражение

Пустой оператор

Составной оператор